Так что я делаю RecyclerView кнопок. И я не знаю, как / где написать onClick для кнопки. У меня есть JSONArray для передачи, и текст кнопки будет иметь cName
.
Так что это мой item_unit.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_unit"
android:background="#000000"
android:textColor="#ffffff"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Это мой ItemAdapter
//Here the stype is <CategoryItem> because this button will open
//new fragment to show the list of the items.
//So it's recyclerview item opens another recyclerview.
class CatAdapter(var btnList: ArrayList<CategoryItem>, var context: Context): RecyclerView.Adapter<ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
var v: View = LayoutInflater.from(context).inflate(R.layout.item_unit, parent, false)
return ViewHolder(v)
}
override fun getItemCount( ): Int {
return btnList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val data = btnList[position]
holder.itemBtn.text = data.name
}
}
class ViewHolder(view: View): RecyclerView.ViewHolder(view){
var itemBtn = view.findViewById<Button>(R.id.item_btn)
}
Это представление переработчика фрагментарно. Мне нужно
class MainActFrag : Fragment() {
var btnList = ArrayList<CategoryItem>()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
var view = inflater.inflate(R.layout.fragment_main_act, container, false)
//Recycler view
view.recyclerView.layoutManager = LinearLayoutManager(context)
//I have the url
var stringRequest = StringRequest(Request.Method.GET, url,
Response.Listener {
var jsonObject = JSONObject(it)
var jsonArrayCates =jsonObject.getJSONArray("category")
for(i in 0 until jsonArrayCats.length()){
var btns =jsonArrayCates.getJSONObject(i)
var iD = btns.getString("id")
var name = btns.getString("name")
var des = btns.getString("description")
btnList.add(CategoryItem(cID, cName, cDes))
}
val adapter = ItemAdapter(btnList, view.context)
recyclerView.adapter = adapter
},
Response.ErrorListener {}
)
Volley.newRequestQueue(view.context).add(stringRequest)
return view
}
}
Так что я не знаю, куда звонить каждому предмету на клике. Если это обычный элемент TextView, я могу это сделать, но, поскольку я решил создать элемент button
, я не знаю, каким образом это можно сделать. Я думал, что это будет легко, потому что кнопка ... кликабельна по своей природе?
Спасибо!