#android #android-recyclerview #android-databinding
#Android #android-recyclerview #android-привязка данных
Вопрос:
Я использую DataBinding
для RecyclerView
в приложении.Я настроил OnClickListener
для CardView
использования привязки данных.Я не могу получить позицию CardView, на которую нажата карта.
Это мой Adapter
class public class QueueAdapter extends RecyclerView.Adapter<QueueAdapter.ViewHolder> implements ClickCard {
private ArrayList<CurrentStatusEntry> originalList;
Context context;
public QueueAdapter(ArrayList<CurrentStatusEntry> originalList, Context context) {
this.originalList = originalList;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
QueueCardBinding binding= DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),R.layout.queue_card,parent,false);
ViewHolder vh=new ViewHolder(binding);
return vh;
}
@Override
public void onBindViewHolder( ViewHolder holder, final int position) {
CurrentStatusEntry entry=originalList.get(position);
holder.qBinding.setQueue(entry);
holder.qBinding.setClickHandler(this);
}
@Override
public int getItemCount() {
return originalList.size();
}
@Override
public void cardClicked(CurrentStatusEntry e) {
Toast.makeText(context,e.getName() " " e.getPeople(),Toast.LENGTH_SHORT).show();
}
public class ViewHolder extends RecyclerView.ViewHolder {
QueueCardBinding qBinding;
private ViewHolder(QueueCardBinding itemView) {
super(itemView.getRoot());
this.qBinding=itemView;
}
}
}
Это мой Activity
public class MainActivity extends AppCompatActivity {
ActivityMainBinding activityMainBinding;
QueueAdapter adapter;
ArrayList<CurrentStatusEntry> entries=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding= DataBindingUtil.setContentView(this,R.layout.activity_main);
activityMainBinding.queue.setLayoutManager(new LinearLayoutManager(this));
activityMainBinding.queue.setHasFixedSize(true);
}
Какие изменения необходимо внести, чтобы щелкнуть текущую карту?
Комментарии:
1. Возьмите переменную привязки данных для position и свяжите с вашим binder.
Ответ №1:
//Please Check This Code To Work!?
//Write This Code Inside onBindViewHolder Method
holder.qBinding.your_card_id.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Enter Your Code
}
});