android - 将值从回收器适配器传递到 android 中的 fragment

标签 android android-fragments android-adapter

我有一个回收器适配器,我在其中为适配器中的项目添加了 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();
                }
            }
        });  

这里是处理从适配器到 fragment 获取值的 fragment 代码。

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

    }  

我正在尝试将 pos 和具有该 pos 的值从适配器传递到 fragment 。但是我的代码不起作用。我该如何解决?

最佳答案

将处理点击事件的界面制作成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);
        }
    });
 }

然后当您将适配器绑定(bind)到 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();
    }
});

关于android - 将值从回收器适配器传递到 android 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49574358/

相关文章:

android - 如何在Tab中显示ListView?

java - 有没有办法将接口(interface)的实现委托(delegate)给不同的类?

android - Android 上的 UI 压力测试

android - android 加密持续时间太长

java - 如何在 fragment 中使用 onClickListener 方法?

c# - 如何通过 Simple Spinner Item C# 用十进制列表填充适配器

android - RecyclerView.ViewHolder 无法使用 ButterKnife 绑定(bind) View

android - 我如何选择要重用的 convertview?

android - 如何在 libgdx android 中拖动一个单独的纹理

Android appwidget remoteviews 不更新