Recyclerview item click does not always work, and sometimes it can work, but with a lot of clicks (I donโ€™t know how many clicks)

Recyclerview element does not always work, and sometimes it can work, but with a lot of clicks (I donโ€™t know how many clicks). If just click once, which can not click.

Note a few days ago I tried to click once, and it worked, but now that I tried to start again using AS, it does not work, although I did not modify this file

My code

 public class RecyclerViewAdapterRiwayat extends RecyclerView.Adapter<RecyclerViewAdapterRiwayat.ViewHolder> { Context context; private static final String TAG = RecyclerViewAdapterRiwayat.class.getSimpleName(); List<GetDataAdapterRiwayat> getDataAdapter; ImageLoader imageLoader1; String FIXURL = "http://192.168.1.101/AndroidFileUpload/"; String url = FIXURL + "uploads/"; String StatusRiwayat; public RecyclerViewAdapterRiwayat(List<GetDataAdapterRiwayat> getDataAdapter, Context context) { super(); this.getDataAdapter = getDataAdapter; this.context = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_items_riwayat, parent, false); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(ViewHolder Viewholder, int position) { final GetDataAdapterRiwayat getDataAdapter1 = getDataAdapter.get(position); imageLoader1 = ServerImageParseAdapter.getInstance(context).getImageLoader(); imageLoader1.get(url+getDataAdapter1.getFotoSetelahRiwayat(), ImageLoader.getImageListener( Viewholder.networkImageView,//Server Image R.mipmap.ic_launcher,//Before loading server image the default showing image. android.R.drawable.ic_dialog_alert //Error image if requested image dose not found on server. ) ); Viewholder.networkImageView.setImageUrl(url+getDataAdapter1.getFotoSetelahRiwayat(), imageLoader1); Viewholder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "coba nih5 : "+getDataAdapter1.getNamaJalanRiwayat()); Intent intent = new Intent(v.getContext(), DetailRiwayatActivity.class); context.startActivity(intent); } }); } @Override public int getItemCount() { return getDataAdapter.size(); } class ViewHolder extends RecyclerView.ViewHolder{ public TextView ImageTitleNameView; public NetworkImageView networkImageView; public ViewHolder(View itemView) { super(itemView); ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item_riwayat); networkImageView = (NetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView2); } } } 
+5
source share
4 answers

If you have a problem only after scrolling / playing RecyclerView, this is a known bug in SupportLibrary

After scrolling through the user, they cannot click on an item in the RecyclerView. (Question AOSP 66996774)

The identifier of issuers is 66996774 , as well as 69823266 , since it is not yet fixed in 27.0.1. Although Google says it fixed it .

Most important: the fix here (Chris Banes, Googler) works fine: https://gist.github.com/chrisbanes/8391b5adb9ee42180893300850ed02f2

+1
source

Try the following:

  class ViewHolder extends RecyclerView.ViewHolder{ public TextView ImageTitleNameView; public NetworkImageView networkImageView; public ViewHolder(View itemView) { super(itemView); ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item_riwayat); networkImageView = (NetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView2); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = getLayoutPosition(); // use this to get item from list Log.d(TAG, "coba nih5 : "+getDataAdapter1.getNamaJalanRiwayat()); Intent intent = new Intent(v.getContext(), DetailRiwayatActivity.class); context.startActivity(intent); } }); } 
0
source

Your code

 Viewholder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "coba nih5 : "+getDataAdapter1.getNamaJalanRiwayat()); Intent intent = new Intent(v.getContext(), DetailRiwayatActivity.class); context.startActivity(intent); } }); 

each time you create a new itemView listener, instead execute OnClickListener or pass null before assigning a new Listener

  Viewholder.itemView.setOnClickListener(null); Viewholder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "coba nih5 : "+getDataAdapter1.getNamaJalanRiwayat()); Intent intent = new Intent(v.getContext(), DetailRiwayatActivity.class); context.startActivity(intent); } }); 

Or add a listener to ViewHolder onCreateViewHolder()

 v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = viewHolder.getAdapterPosition(); // use this to get item from list Log.d(TAG, "coba nih5 : "+getDataAdapter1.getNamaJalanRiwayat()); Intent intent = new Intent(v.getContext(), DetailRiwayatActivity.class); context.startActivity(intent); } }); 
0
source

Add them to your parent R.layout.recyclerview_items_riwayat

 android:clickable="false" android:focusable="false" 
0
source

Source: https://habr.com/ru/post/1261907/


All Articles