RecyclerView не имеет setOnItemClickListener, как ListView.Если вы хотите, чтобы он щелкнул позицию элемента в Android RecyclerView, которая создается во фрагменте, выполните следующие действия, например:
- OnFragement.java, который содержит обзор переработчика во фрагменте:
public class OneFragment extends Fragment {
RecyclerView recyclerView;
String arr[]={"Apple","Banana","Mango","Orange"};
public static OneFragment newInstance() {
Bundle args = new Bundle();
OneFragment fragment = new OneFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_one,null);
recyclerView=view.findViewById(R.id.recyclerview);
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
MyAdapter myAdapter=new MyAdapter(getActivity(),arr);
recyclerView.setAdapter(myAdapter);
return view;
}
В вашем адаптере выполните следующие действия:
public class MyAdapter extends RecyclerView.Adapter {
Context context;
String array[];
LayoutInflater layoutInflater;
public MyAdapter(FragmentActivity activity, String[] arr) {
context=activity;
array=arr;
layoutInflater=LayoutInflater.from(context);
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=layoutInflater.inflate(R.layout.recycler_row,null);
return new MyHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyHolder myHolder, final int i) {
myHolder.tvName.setText(array[i]);
//to get position after clicked on button or any UI component on row
myHolder.btnBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"You have clicked item "+array[i]+" at "+i+"th position",Toast.LENGTH_SHORT).show();
}
});
//to get position after clicked on one itemview or row
myHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"You have clicked item at "+i+"th position",Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return array.length;
}
class MyHolder extends RecyclerView.ViewHolder
{
TextView tvName;
Button btnBuy;
public MyHolder(@NonNull View itemView) {
super(itemView);
tvName=itemView.findViewById(R.id.tv_fruit);
btnBuy=itemView.findViewById(R.id.btn_buy);
}
}