将值从回收站适配器传递到android中的片段

Aja*_*rni 1 android android-adapter android-fragments

我有一个回收站适配器,在其中添加setOnClickListener了适配器中的项。代码如下:

@Override
    public void onBindViewHolder(final FiltersAdapter.MyViewHolder holder, final int position) {
        holder.mOrganizer.setText(filtersList.get(position));
        holder.mLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                try {
                    //Log.e("message","ONclick FIlter");
                    if (holder.mOrganizerCheck.isChecked()){
                        holder.mOrganizerCheck.setChecked(false);
                    }else {
                        holder.mOrganizerCheck.setChecked(true);
                        int pos = holder.getAdapterPosition();

                        filtersList.get(pos);

                        /*Bundle bundle = new Bundle();
                        bundle.putInt(pos, );*/

                        Log.d(TAG, "onClick: " +filtersList);
                        Log.d(TAG, "onClick of position: " +pos);

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });  
Run Code Online (Sandbox Code Playgroud)

这是片段代码,用于处理从适配器到片段的值。

private void initView() {
        mrvFilterBySender = (RecyclerView) mFilterView.findViewById(R.id.rvFilterBySender);
        mFiltersAdapter = new FiltersAdapter(getActivity(), mListOrganizer);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext());
        mrvFilterBySender.setLayoutManager(mLayoutManager);

        mrvFilterBySender.setAdapter(mFiltersAdapter);
        mFiltersAdapter.notifyDataSetChanged();

        mrvFilterBySender.setAdapter(mFiltersAdapter);
        mrvFilterBySender.setRecyclerListener(new RecyclerView.RecyclerListener() {
            @Override
            public void onViewRecycled(RecyclerView.ViewHolder holder) {
                holder.getAdapterPosition();
            }
        });

    }  
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过pos并重视pos从适配器到片段的价值。但是我的代码无法正常工作。我该如何解决?

And*_*eam 5

使处理点击事件的界面进入recyclerview ..下面的代码用于处理点击事件。

onItemClickListner onItemClickListner;

public void setOnItemClickListner(RecyclerViewAdpater.onItemClickListner onItemClickListner) {
    this.onItemClickListner = onItemClickListner;
}

public interface onItemClickListner{
    void onClick(String str);//pass your object types.
}
   @Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
    String data=mStringList.get(position); // if you pass object of class then create that class object.
    holder.textView.setText(data);
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onItemClickListner.onClick(data);
        }
    });
 }
Run Code Online (Sandbox Code Playgroud)

然后在将适配器绑定到RecyclerView下面的代码调用中之后。

mRvData.setLayoutManager(new LinearLayoutManager(this));
mRvData.setAdapter(recyclerViewAdpater);
recyclerViewAdpater.notifyDataSetChanged();
recyclerViewAdpater.setOnItemClickListner(new RecyclerViewAdpater.onItemClickListner() {
    @Override
    public void onClick(String str) {
        Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
    }
});
Run Code Online (Sandbox Code Playgroud)


Dee*_*tel 5

在适配器中创建接口

public interface OnItemClickListener {
  void onItemClicked(int position, Object object);
}
Run Code Online (Sandbox Code Playgroud)

在您的适配器呼叫中

Adapter adapter = new Adapter(context, list, new Adapter.OnItemClickListener() {
            @Override
            public void onItemClicked(int position, Object object) {
                  // Handle Object of list item here
            }
        });
Run Code Online (Sandbox Code Playgroud)

在您的适配器上

private OnItemClickListener onItemClickListener; // Global scope 
Run Code Online (Sandbox Code Playgroud)

在构造函数调用中:

this.onItemClickListener = onItemClickListener;
Run Code Online (Sandbox Code Playgroud)

在您的项目点击事件上:

itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      onItemClickListener.onItemClicked(position, _list.get(position));
    }
});
Run Code Online (Sandbox Code Playgroud)