दिलचस्प पोस्ट
संबंधित tnsnames.ora फ़ाइल का स्थान निर्धारित करना आप इस टूटे हुए यादृच्छिक शफल से क्या वितरण प्राप्त करते हैं? आर डेटा में डेटा के शीर्ष एन मानों को कैसे खोजें या श्रेणी के भीतर (समूहवार) खोजें PHP में सरणी के लिए ऑपरेटर? आईफोन – आप एक छवि कैसे रंगते हैं? App.config फ़ाइल को एक कस्टम पथ में स्थानांतरित करना निश्चित सी + + पुस्तक गाइड और सूची एक PostgreSQL तालिका में CSV फ़ाइल डेटा कैसे आयात करें? कैसे व्यवहार में C + + लिंक काम करता है? एंड्रॉइड एमुलेटर में एपीके फ़ाइल कैसे स्थापित करें? "बैच" क्या है, और क्यों जाना जाता है? स्विच स्टेटमेंट में कई मामलों में एंड्रॉइड में पृष्ठभूमि का काम करते समय प्रगति डीआईएलओॉग दिखाने के लिए एसिंक टास्क का उपयोग कैसे करें? सीमके द्वारा एक्जीक्यूटेबल के रूप में एक ही फ़ोल्डर में डीएलएल फाइलों की प्रतिलिपि कैसे करें? समय स्ट्रिंग हैशिंग को संकलित करें

रीसाइक्लर पर एक अलग गतिविधि कैसे खोलें आइटम पर क्लिक करें

मैं navigation drawer में अपनी listitems दिखाने के लिए listitems का उपयोग कर रहा हूं। मैंने listitems को लागू किया है, लेकिन मुझे आइटम पर clicked होने पर एक अलग activity को कैसे खोलने पर अटक गया है। मेरे सभी आइटम आइटम पर क्लिक करते हैं, क्योंकि अब कोड के अनुसार item position साथ toast प्रदर्शित करना है

मैं मदद की सराहना करता हूँ

AdapterClass.java

 public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder> { private LayoutInflater inflater; private Context context; List<Information>data= Collections.emptyList(); public AdapterClass(Context context,List<Information>data){ this.context=context; inflater= LayoutInflater.from(context); this.data=data; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view= inflater.inflate(R.layout.custom_row,parent,false); MyViewHolder holder=new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { Information current=data.get(position); holder.title.setText(current.title); holder.icon.setImageResource(current.iconId); } @Override public int getItemCount() { return data.size(); } class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ TextView title; ImageView icon; public MyViewHolder(View itemView) { super(itemView); title=(TextView)itemView.findViewById(R.id.listText); icon=(ImageView)itemView.findViewById(R.id.listIcon); itemView.setClickable(true); itemView.setOnClickListener(this); } @Override public void onClick(View v) { Toast.makeText(context,"The Item Clicked is: "+getPosition(),Toast.LENGTH_SHORT).show(); } }; } 

 Log cat error after implementing Konrad's solution 02-27 15:24:52.833: D/AndroidRuntime(1630): --------- beginning of crash 02-27 15:24:52.834: E/AndroidRuntime(1630): FATAL EXCEPTION: main 02-27 15:24:52.834: E/AndroidRuntime(1630): Process: com.snappy.stevekamau.snappy, PID: 1630 02-27 15:24:52.834: E/AndroidRuntime(1630): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.snappy.stevekamau.snappy/com.snappy.stevekamau.snappy.YourActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.ActivityThread.access$800(ActivityThread.java:144) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.os.Handler.dispatchMessage(Handler.java:102) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.os.Looper.loop(Looper.java:135) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.ActivityThread.main(ActivityThread.java:5221) 02-27 15:24:52.834: E/AndroidRuntime(1630): at java.lang.reflect.Method.invoke(Native Method) 02-27 15:24:52.834: E/AndroidRuntime(1630): at java.lang.reflect.Method.invoke(Method.java:372) 02-27 15:24:52.834: E/AndroidRuntime(1630): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 02-27 15:24:52.834: E/AndroidRuntime(1630): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 02-27 15:24:52.834: E/AndroidRuntime(1630): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:95) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:88) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.support.v7.internal.app.ToolbarActionBar.<init>(ToolbarActionBar.java:84) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionBarActivityDelegateBase.java:175) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.java:92) 02-27 15:24:52.834: E/AndroidRuntime(1630): at com.snappy.stevekamau.snappy.YourActivity.onCreate(YourActivity.java:18) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.Activity.performCreate(Activity.java:5933) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 02-27 15:24:52.834: E/AndroidRuntime(1630): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 02-27 15:24:52.834: E/AndroidRuntime(1630): ... 10 more 02-27 15:24:52.839: W/ActivityManager(464): Force finishing activity com.snappy.stevekamau.snappy/.YourActivity 02-27 15:24:52.841: W/ActivityManager(464): Force finishing activity com.snappy.stevekamau.snappy/.MainActivity 

वेब के समाधान से एकत्रित समाधान "रीसाइक्लर पर एक अलग गतिविधि कैसे खोलें आइटम पर क्लिक करें"

मुझे लगता है कि यह आसान है आप कर सकते हैं (लेकिन आपको ऐसा करने की आवश्यकता नहीं है क्योंकि ViewHolder वर्ग स्थिर नहीं है) फ़ील्ड संदर्भ बनाओ जैसा नीचे दिखाया गया है:

  private final Context context; public MyViewHolder(View itemView) { super(itemView); context = itemView.getContext(); ... } 

और अपने onClick विधि पर बस नीचे sth कॉल:

  @Override public void onClick(View v) { final Intent intent; switch (getAdapterPostion()){ case 0: intent = new Intent(context, FirstActivity.class); break; case 1: intent = new Intent(context, SecondActivity.class); break; ... default: intent = new Intent(context, DefaultActivity.class); break; } context.startActivity(intent); } 

या

  @Override public void onClick(View v) { final Intent intent; if (getAdapterPosition() == sth){ intent = new Intent(context, OneActivity.class); } else if (getPosition() == sth2){ intent = new Intent(context, SecondActivity.class); } else { intent = new Intent(context, DifferentActivity.class); } context.startActivity(intent); } 

आप अपने एडाप्टर के onClickListener को लागू कर सकते हैं:

  public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder>implements View.OnClickListener 

और उसमें विधि के साथ अंतरफलक का उपयोग करें

 public interface mClickListener { public void mClick(View v, int position); } 

और आपके ऑनक्लिक विधि में इंटरफ़ेस में विधि को कॉल करें और इसे दृश्य और स्थिति पास करें

आपके मुख्य गतिविधि में उस अंतरफलक को लागू करें

 public class MainActivity extends ActionBarActivity implements AdapterClass.mClickListener 

और उस विधि को ओवरराइड करें

 @Override public void onCommentsClick(View v, int position) { final Intent intent = new Intent(this, OtherActivity.class); } 

गतिविधि के रूप में अपनी गतिविधि को बेहतर ढंग से प्रबंधित करने के लिए अन्य वर्गों से नहीं

बस आप इसे आसान कर सकते हैं … आपको अपने व्यू से अपनी गतिविधि का संदर्भ प्राप्त करना होगा।

 //Create intent getting the context of your View and the class where you want to go Intent intent = new Intent(view.getContext(), YourClass.class); //start the activity from the view/context view.getContext().startActivity(intent); //If you are inside activity, otherwise pass context to this funtion 

याद रखें कि आपको AndroidManifest.xml को संशोधित करने और गतिविधि को स्थानांतरित करने की आवश्यकता है …

 <activity android:name=".YourClass" android:label="Label for your activity"></activity> 

यह प्रश्न बहुत पहले पूछा गया है, वैसे भी मैं एक आसान जवाब लिख सकता हूँ यह किसी को मदद कर सकता है

रिसाइक्लर वीव की मदों पर एक क्लिक लिस्टनर को संलग्न करने का सबसे आसान तरीका एडैप्टर के नीचे है:

  @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(getContext() , yourActivity.Class) startActivity(intent); } }); }