获取 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")
}
}
在我的代码中,我有一个正在填充数据的 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")
}
}