Получить позицию CardView, используя привязку данных для RecyclerView

#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
            }
      });