获取 Activity 中 recyclerView 项目的内容

Getting the content of a recyclerView item in the Activity

在我的代码中,我有一个正在填充数据的 recyclerView。在每个项目上,我都有一个 radioButton 和几个 TextView。如何在我的 Activity 中访问被点击项目的 TextView 的内容?

这是我的适配器:

public class SelectCategoryAdapter extends RecyclerView.Adapter<SelectCategoryAdapter.MyViewHolder> {

    private Context mContext;
    private List<Category2> categoryList;
    private Category2 category;
    private RadioButton radioButton;
    int mCheckedPositon = -1;

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView title, count, nameCategory;
        public RadioButton radioButton;

        public MyViewHolder(View view) {
            super(view);
            nameCategory = (TextView) view.findViewById(R.id.edittext_category);
            count = (TextView) view.findViewById(R.id.count);
            radioButton = (RadioButton) view.findViewById(R.id.radio1);
            //overflow = (ImageView) view.findViewById(R.id.overflow);
        }
    }


    public SelectCategoryAdapter(Context mContext, List<Category2> categoryList) {
        this.mContext = mContext;
        this.categoryList = categoryList;
    }

    @Override
    public SelectCategoryAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.adapter_select_category, parent, false);

        return new SelectCategoryAdapter.MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(final SelectCategoryAdapter.MyViewHolder holder, final int position) {
        category = categoryList.get(position);
        holder.nameCategory.setText(category.getName());
        if (category.getTasks() < 10){
            holder.count.setText(" " + Integer.toString(category.getTasks()) + " ");
        } else {
            holder.count.setText(Integer.toString(category.getTasks()));
        }

        holder.radioButton.setOnCheckedChangeListener(null);
        holder.radioButton.setChecked(position == mCheckedPositon);
        holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                mCheckedPositon = position;
                notifyDataSetChanged();
            }
        });

    }


    @Override
    public int getItemCount() {
        return categoryList.size();
    }

}

我希望能够在我的 Activity 中看到 "nameCategory" 的内容。但只有与用户刚刚单击的项目相关的一项。

您可以添加一个接口来在您的 Activity 和适配器之间进行通信。

public interface SelectCategoryListener {
    void categorySelected(Category2 category);
}

然后您可以将 SelectCategoryListener 添加到 Adapter 的构造函数并将其设置为全局变量

public SelectCategoryAdapter(Context mContext, List<Category2> categoryList, 
                             SelectCategoryListener listener) {
    this.mContext = mContext;
    this.categoryList = categoryList;
    this.listener = listener
}

现在,在您设置 onClickListener 的 onBindViewHolder 中,您应该能够使用侦听器在 Activity 和 Adapter 之间进行通信。

public class SelectCategoryAdapter extends RecyclerView.Adapter<SelectCategoryAdapter.MyViewHolder> {

     MyCallBack myCallback;

     public interface MyCallBack{
         void listenerMethod(String textViewvalue);
     }

     public SelectCategoryAdapter(Context context, ArrayList<TaskComments> items, MyCallBack myCallBack) {
         this.context = context;
         this.items = items;
         this.myCallBack = myCallBack;
     }

     @Override
     public void onBindViewHolder(final SelectCategoryAdapter.MyViewHolder holder, final int position) {

         category = categoryList.get(position);
         holder.nameCategory.setText(category.getName());
         if (category.getTasks() < 10){
             holder.count.setText(" " + Integer.toString(category.getTasks()) + " ");
         } else {

          holder.count.setText(Integer.toString(category.getTasks()));
         }

         holder.radioButton.setOnCheckedChangeListener(null);
         holder.radioButton.setChecked(position == mCheckedPositon);
         holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 myCallBack.listenerMethod("Your data you want to transfer")
                 mCheckedPositon = position;
                 notifyDataSetChanged();
             }
         });

     }


}

并且在您的 activity 中,您可以实现此接口以像这样使用它。

MyActivity.class

public class MyActivity extends AppCompatActivity implements 
   SelectCategoryAdapter. MyCallBack{


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SelectCategoryAdapter adapter = new SelectCategoryAdapter(this, yourData, this);
    }




     public void listenerMethod(String textViewValue){
         Toast.makeText(this, "You have " + textViewValue +" Access in the activity now")

     }
}