पर क्लिक करें यह RecyclerView
को लागू करने का मेरा पहला प्रयास है। मैंने यूआई तत्वों (बटन) पर क्लिक घटनाओं को संभालने के लिए Adapter
और ViewHolder
कक्षा के बीच Callback
इंटरफ़ेस लागू किया है। मुझे ViewHolder
का संदर्भ प्राप्त करने में समस्याएं आ रही हैं, जिसमें क्लिक हुआ था। मैं सूची में पहले आइटम के लिए Button
पर क्लिक कर सकता हूं, हालांकि जो क्रिया मैंने परिभाषित की है, वह मेरे रीसाइक्लिंग व्यू में अंतिम viewholder
पर किया गया है। आखिरकार मैंने अपने इंटरफ़ेस के माध्यम से स्थिति को पारित करने के लिए पता लगाया, लेकिन मैं समझने के लिए संघर्ष कर रहा हूं कि उस दर्शक को संदर्भ कैसे प्राप्त करें।रीसाइक्लर व्यू पर व्यूहोल्डर को संदर्भ प्राप्त करना
public class RoomAdapter extends RecyclerView.Adapter<RoomAdapter.RoomViewHolder>
{
List<Room> mRooms;
public RoomAdapter(List<Room> rooms) {
mRooms = rooms;
}
@Override
public RoomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
final View viewItem = LayoutInflater
.from(viewGroup.getContext())
.inflate(R.layout.room_rv_item,viewGroup,false);
return vh = new RoomViewHolder(viewItem,new IRoomViewClick() {
@Override
public void editname(int pos) {
}
});
}
@Override
public void onBindViewHolder(RoomViewHolder roomViewHolder, int i) {
Room r = getItem(i);
roomViewHolder.label.setText(r.name);
}
public Room getItem(int position)
{
return mRooms.get(position);
}
@Override
public long getItemId(int position) {
return mRooms.get(position).getId();
}
@Override
public int getItemCount() {
return mRooms.size();
}
public static class RoomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
TextView label;
Button editBtn;
LinearLayout labelView;
Button saveBtn;
Button deleteBtn;
EditText editNameET;
IRoomViewClick mListener;
public RoomViewHolder(View itemView, IRoomViewClick listener) {
super(itemView);
labelView = (LinearLayout) itemView.findViewById(R.id.labelview);
mListener = listener;
editBtn =(Button) itemView.findViewById(R.id.editbtn);
editBtn.setOnClickListener(this);
label = (TextView) itemView.findViewById(R.id.room_listitem_label);
}
@Override
public void onClick(View view) {
int pos = getPosition();
mListener.editname(pos);
}
}
public static interface IRoomViewClick
{
public void editname(int pos);
}
}
कि न सिर्फ मुझे बटन के बजाय ViewHolder ही करने के लिए एक रेफरी मिल सकते हैं? – gsueagle2008
हे ... मैंने सवाल को सावधानी से नहीं पढ़ा ... मैंने सोचा कि आपको एक स्थिति की आवश्यकता है (क्योंकि मुझे आपके कोड में getPosition() के शरीर को नहीं देखा गया था ... लेकिन हाँ, आप वहां ViewHolder डाल सकते हैं इसके बजाए ... लेकिन तब आप स्थिति को नहीं जान पाएंगे, क्योंकि ... ठीक है, यह रीसाइक्लर व्यू है और व्यू/व्यूल्डर हो सकता है ... रीसाइक्लिंग ... – Selvin
हाँ, मैंने अपने कोड में getPosition() फ़ंक्शन को कार्यान्वित करना याद किया। शायद यह मदद नहीं की। मैं अभी भी टैग्स को टैग करने और प्राप्त करने पर पूरी तरह स्पष्ट नहीं हूं, और इसे एक व्यूहोल्डर में परिवर्तित कर रहा हूं जिसे मैं कुशल बना सकता हूं। – gsueagle2008