android - Android:单击回收站视图中的图像按钮时,从 Textview 传递文本
问题描述
所以我有一个带有 2 个文本和 1 个图像按钮的回收站视图。我想单击图像按钮,然后打开一个新活动并将文本从下一个活动转移textViewADV1
到下一个活动
我的 recyclerview 中的 items .xml 包含以下内容
<ImageButton
android:id="@+id/imageButton1"
android:clickable="true"
android:onClick="openActivity2"/>
<TextView
android:id="@+id/textViewADV1"
android:text="Line 1"/>
<TextView
android:id="@+id/textViewADV2"
android:text="Line 2"/>
我的主要活动中的 openActivity2()
public void openActivity2(View view)
{
Intent intentLoadNewActivity = new Intent(AdvancedResults.this,OpenSelectedAdvanced.class);
startActivity(intentLoadNewActivity);
}
我尝试过,textViewADV1.getText().toString()
但它只读取回收站视图中第一项的文本
我的回收适配器
public class AdvancedAdapter extends RecyclerView.Adapter<AdvancedAdapter.AdvancedViewHolder> {
private ArrayList<AdvancedItem> mAdvancedList;
公共字符串 mImage;
public static class AdvancedViewHolder extends RecyclerView.ViewHolder {
public ImageButton mImagebtn;
public TextView mTextView1;
public TextView mTextView2;
public AdvancedViewHolder(View itemView) {
super(itemView);
mImagebtn = itemView.findViewById(R.id.imageButtonADV);
mTextView1 = itemView.findViewById(R.id.textViewADV1);
mTextView2 = itemView.findViewById(R.id.textViewADV2);
}
}
public AdvancedAdapter(ArrayList<AdvancedItem> advancedList) {
mAdvancedList = advancedList;
}
@Override
public AdvancedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.advanced_item, parent, false);
AdvancedViewHolder evh = new AdvancedViewHolder(v);
return evh;
}
@Override
public void onBindViewHolder(AdvancedViewHolder holder, int position) {
AdvancedItem currentItem = mAdvancedList.get(position);
holder.mTextView1.setText(currentItem.getText1());
holder.mTextView2.setText(currentItem.getText2());
mImage = "www.testImageURL.com";
Picasso.get().load(mImage).into(holder.mImagebtn);
}
@Override
public int getItemCount() {
return mAdvancedList.size();
}
}
解决方案
如果您在适配器类中声明了onBindViewHolder(),那么为什么要从 MainActivity 开始活动。您应该在 onBindViewHolder() 中添加 setOnclicklistenr() 以通过以下方式实现所需的结果:
public class AdvancedAdapter extends RecyclerView.Adapter<AdvancedAdapter.AdvancedViewHolder> {
private ArrayList<AdvancedItem> mAdvancedList;
//one more thing you have to create Context field so that you can
//you can start the activity from any context (From Any activity)
private Context mContext;
public String mImage;
public static class AdvancedViewHolder extends RecyclerView.ViewHolder {
public ImageButton mImagebtn;
public TextView mTextView1;
public TextView mTextView2;
public AdvancedViewHolder(View itemView) {
super(itemView);
mImagebtn = itemView.findViewById(R.id.imageButtonADV);
mTextView1 = itemView.findViewById(R.id.textViewADV1);
mTextView2 = itemView.findViewById(R.id.textViewADV2);
}
}
public AdvancedAdapter(ArrayList<AdvancedItem> advancedList, Context mContext) {
mAdvancedList = advancedList;
this.mContext = mContext;
}
@Override
public AdvancedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.advanced_item, parent, false);
AdvancedViewHolder evh = new AdvancedViewHolder(v);
return evh;
}
@Override
public void onBindViewHolder(AdvancedViewHolder holder, int position) {
AdvancedItem currentItem = mAdvancedList.get(position);
holder.mTextView1.setText(currentItem.getText1());
holder.mTextView2.setText(currentItem.getText2());
mImage = "www.testImageURL.com";
holder.mImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Here You start your activity
Intent intent = new Intent(mContext, Activity2.class);
//you can putExtras here
mContext.startActivity(intent);
});
Picasso.get().load(mImage).into(holder.mImagebtn);
}
@Override
public int getItemCount() {
return mAdvancedList.size();
}
}
现在在您实施 recyclerView 的活动中初始化此适配器,并将该数组列表发送到适配器的构造函数的参数中:) 如果还不明白,您可以尝试下面给出的链接上的教程:https: //www.youtube。 com/watch?v=bIppSKk9afI
推荐阅读
- css - CSS - 具有右边距的 Flex 元素
- sql - 将一个变量中的不同值组合在一起
- html - Childs div大小与最大的div css相同
- javascript - 如何从 C# 创建的 JavaScript 中的数据表中检查字段的值?
- ios - Swift 4.2 - Cocoapods:在 resource_bundles 中添加和访问 scnassets
- java - 当我通过 java 代码运行 jmeter 时出现错误 converters.ConversionException
- java - Java 中的 System.in.read() 阻塞多长时间
- mysql - 如何使这个 MySQL 查询(带有子查询)更快?
- c# - XmlDocument,预格式化的 xml:仅在 XML 声明后添加新行
- matlab - 如何使用 fft 找到周期信号的最大频率?