मुझे एक रीसाइक्लिंग व्यू मिला है जो मेरे स्ट्रिंग एरे की सामग्री लोड कर रहा है जो ठीक काम करता है, हालांकि मैं एक नई गतिविधि खोलना चाहता हूं जिस पर उन्होंने देखा है।RecyclerView में ViewHolder से कॉलिंग गतिविधि?
मैंने क्या किया बुलाया कक्षाएं तो जैसे एक सरणी बनाई गई है:
<array name="classes">
<item>ClassOne</item>
<item>ClassTwo</item>
<item>ClassThree</item>
<item>ClassFour</item>
</array>
ये एक सरणी में जमा हो जाती है, और नीचे मेरी MainActivityList एडाप्टर के लिए पारित कर दिया:
String[] classes = resource.getStringArray(R.array.classes);
MainActivityList adapter = new MainActivityList(titles,content, images, classes);
recyclerView.setAdapter(adapter);
मैं प्रबंधित किया है ऑनक्लिक लिस्टनर को व्यूहोल्डर में जोड़ने के लिए और आउटपुट को प्रत्येक दृश्य को प्रत्येक क्लास को कौन सा क्लास सौंपा गया है, हालांकि मैं समझ नहीं सकता या काम नहीं कर सकता, दूसरी गतिविधि कैसे लॉन्च करूं।
वर्ग के नाम उदाहरण
public class MainActivityList extends RecyclerView.Adapter<MainActivityList.ViewHolder> {
private String[] mTitles;
private String[] mContent;
private String[] mClasses;
private TypedArray mImages;
private Context context;
public MainActivityList(String[] titles, String[] content, TypedArray images, String[] classes) {
this.mTitles = titles;
this.mContent = content;
this.mImages = images;
this.mClasses = classes;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup,int i) {
final View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.activity_main_card, viewGroup, false);
ViewHolder vh = new ViewHolder(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ViewHolder vh = (ViewHolder)v.getTag();
Log.v("DEBUG", "Clicked" + vh.classes);
}
});
return vh;
}
public void onBindViewHolder(ViewHolder holder, int position) {
holder.titleView.setText(mTitles[position]);
holder.contentView.setText(mContent[position]);
holder.imageView.setImageDrawable(mImages.getDrawable(position));
holder.classes = mClasses[position];
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView titleView;
public TextView contentView;
public ImageView imageView;
public String classes;
public ViewHolder(View v) {
super(v);
titleView = (TextView) v.findViewById(R.id.card_title);
contentView = (TextView) v.findViewById(R.id.card_content);
imageView = (ImageView)v.findViewById(R.id.card_image);
v.setTag(this);
}
}
@Override
public int getItemCount() {
return mTitles.length;
}
}
लिंक किया गया लेख उत्कृष्ट है। बहुत से उत्तर उत्तर क्लिक ईवेंट को संभाल सकते हैं, जब तक कि फ़ंक्शन स्वयं निहित हो (यानी लॉग फ़ाइल में लिखना)। यह एकमात्र समाधान है जिसे मैंने देखा है जो मूल कॉलिंग गतिविधि/टुकड़े को श्रोता पंजीकृत करने और ईवेंट हैंडलिंग को लेने की अनुमति देता है। पूरी तरह से सुनिश्चित नहीं है कि यह बिल्कुल इष्टतम है, लेकिन यह काम करता है। – ExactaBox