#android #android-studio #kotlin #android-recyclerview #android-spinner
#Android #android-studio #kotlin #android-recyclerview #android-счетчик
Вопрос:
ребята. В последние дни я испытывал трудности, потому что я хочу реализовать представление Recycler, которое в основном представляет собой просто счетчик, который будет отображаться в зависимости от количества подсчитанных пользователей. Правда в том, что я никогда не использовал счетчик внутри представления recycler, и я думал, что это будет то же самое, что строка, но это не так.
Шаги, которым я следовал, такие же, как и в обычном представлении Recycler, когда я использую строки
Я создал класс модели (Porcentaje.kt)
import android.widget.Spinner
class Porcentaje (var porcent: Spinner)
Затем адаптированный (porcentajeAdapter.kt) и внутри адаптера находится держатель представления вверху
class porcentajeAdapter(private var mContext: Context, var califList:ArrayList<Porcentaje>, var numCalif: Int): RecyclerView.Adapter<porcentajeAdapter.porcentaje>() {
lateinit var prefs: SharedPreferences
lateinit var editor: SharedPreferences.Editor
lateinit var prefs2: SharedPreferences
lateinit var editor2: SharedPreferences.Editor
class porcentaje(itemView: View) : RecyclerView.ViewHolder(itemView) {
var spinner: Spinner = itemView.findViewById(R.id.sp_ca)
}
override fun getItemCount(): Int {
return califList.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): porcentaje {
val vista: View =
LayoutInflater.from(parent.context).inflate(R.layout.fragment_frag_her, parent, false)
prefs = mContext.getSharedPreferences("Herramientas", Context.MODE_PRIVATE)
editor = prefs.edit()
prefs2 = mContext.getSharedPreferences("TiendaShare", Context.MODE_PRIVATE)
editor2 = prefs.edit()
return porcentaje(vista)
}
override fun onBindViewHolder(holder: porcentaje, position: Int) {
val porcentaje: Porcentaje = califList[position]
holder.spinner = porcentaje.porcent
}}
Затем передаю фургон моему Фрагменту
class fragHer(var nCalif: Int) : Fragment() {
var califList = ArrayList<Porcentaje>()
var spCalif: Spinner?=null
lateinit var adapter: porcentajeAdapter
lateinit var prefs: SharedPreferences
lateinit var editor: SharedPreferences.Editor
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
}
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
var vista = inflater.inflate(R.layout.fragment_frag_her, container, false)
val context = vista.context
prefs = context.getSharedPreferences("Herramientas", Context.MODE_PRIVATE)
prefs.getInt("NumAsesores", 0).let {
if (it== 0) initData()
else init(it)
}
//findViews
spGerente = vista.findViewById(R.id.spGerente)
spCalif = vista.findViewById(R.id.sp_ca)
//RV
adapter = porcentajeAdapter(context, califList, nCalif)
val rvObject: RecyclerView = vista.findViewById(R.id.rv_pAsesor)
rvObject.adapter = adapter
rvObject.layoutManager = LinearLayoutManager(context)
rvObject.setHasFixedSize(true)
return vista
}
private fun initData() {
spCalif?.let { Porcentaje(it) }?.let { califList.add(it) }
}
private fun init(ases: Int){
for (x in 0 until ases){
spCalif?.let { Porcentaje(it) }?.let { califList.add(it) }
}
}
Однако, похоже, это не работает.
Также мой счетчик восстанавливает arraylist из string.
Есть какие-нибудь советы по использованию счетчика внутри RV? Как вы, ребята, можете видеть, это в Kotlin, но любая помощь будет очень оценена
Спасибо (: