यह सैद्धांतिक प्रश्न होगा।व्यूहोल्डर में बाध्यकारी
हर किसी के रूप में हम ऐप के कई हिस्सों में रीसाइक्लिंग व्यू का उपयोग करते हैं। कभी-कभी रीसाइक्लर व्यू में अलग-अलग आइटम होते हैं, उदाहरण के लिए न केवल छवि, बल्कि विज्ञापन, संकेत इत्यादि। और यही कारण है कि हम एडाप्टर में getViewType() विधि का उपयोग कर सकते हैं।
लेकिन समस्या तब होती है जब हमारे पास कई दृश्य होते हैं और एडाप्टर में बाध्यकारी सुरुचिपूर्ण नहीं है। तो यहां सवाल है, क्या व्यूहोल्डर में डेटा को बांधने के लिए यह अच्छा और अच्छा पैटर्न है?
मान लें कि हमारे पास ऐप्स की सूची है।
प्रत्येक ऐप में सादगी के लिए नाम है। हमारे ViewHolder इस तरह दिखता है:
class AppViewHolder extends RecyclerView.ViewHolder {
public TextView nameText;
AppViewHolder(View itemView) {
super(itemView)
nameText = (TextView) itemView.findViewById(R.id.text_name);
}
}
अब हम बाँध विधि जोड़ सकते हैं:
public void bind(App app) {
nameText.setText(app.getName());
}
यह अच्छा पैटर्न है?
एक और समाधान ViewModel का उपयोग करेगा। चूंकि हमारे पास RecyclerView में अलग-अलग आइटम हैं, इसलिए हमारे एडाप्टर में कक्षा की सूची हो सकती है जो प्रत्येक व्यूमोडेल के लिए बेस क्लास है।
तो बुनियादी वर्ग है:
class RecyclerViewItem {}
अब वर्ग है, जो एप्लिकेशन के लिए ViewModel है।
class AppRecyclerViewItem extends RecyclerViewItem {
App app;
...
}
और हमारे एडाप्टर सिर्फ RecyclerViewItems की सूची है:
class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
List<RecyclerViewItem> items;
...
}
इस दृष्टिकोण (मैं ViewModel का उपयोग कर मतलब) यह ViewHolder में बाँध विधि जोड़ने के लिए बेहतर है, या ViewModel में साथ
तो?
मुझे लगता है कि पहली विधि अच्छी है क्योंकि विशेष रूप से पुनर्नवीनीकरण में बाइंडव्यूहोल्डर डब्ल्यू ई कॉलधारक में बाध्य करें, इसलिए एडाप्टर को कई लाइनें नहीं मिलेंगी। लेकिन मुझे आपके द्वारा सुझाए गए विचार पसंद हैं, मैं इसमें डुबकी लगाऊंगा। – ThirdMartian
क्या आप इस काम का उपयोग अपने काम पर कर रहे हैं? क्या आप अपना अनुभव साझा कर सकते हैं? – ThirdMartian