[英]How to get a TEXT VIEW value from selected item in RECYCLERVIEW
我正在尝试从RecyclerView中的选定项目中获取TextView值,并将该值发送到其他活动。 我的RecyclerView布局文件有两个TextView,一个用于名字和姓氏,另一个用于电子邮件。 我发现recyclerview不支持LIST VIEW之类的某些功能,如果有人可以为我提供一些建议,这是我的代码。
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.text.Editable;
import android.text.Spannable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.RecyclerView;
import com.example.lab.Activities.MainActivity;
import com.example.lab.Activities.ModifyPers;
import com.example.lab.Activities.NewPersActivity;
import com.example.lab.Entities.Personne;
import java.util.List;
public class ApiPersListAdapter extends RecyclerView.Adapter<ApiPersListAdapter.ViewHolder> {
TextView text1;
Handler handler =new Handler();
String s;
private Context context;
private List<Personne> list;
String nom;
public ApiPersListAdapter(Context context, List<Personne> list) {
this.context = context;
this.list = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.recyclerview_api_list_item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Personne p = list.get(position);
holder.nom_pre.setText(p.getPrenom()+" "+p.getNom());
holder.email.setText(p.getEmail());
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView nom_pre,email;
public ViewHolder(View itemView) {
super(itemView);
nom_pre = itemView.findViewById(R.id.nom_pren);
email = itemView.findViewById(R.id.email);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(itemView.getContext(), ModifyPers.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.v("nom",nom);
intent.putExtra("key_prenom",nom);
itemView.getContext().startActivity(intent);
}
});
}
}
}
在你itemView.setOnClickListener
在ViewHolder
类,在该行intent.putExtra("key_prenom",nom);
,将变量nom
替换为:
list.get(getAdapterPosition()).getNom();
我已经改变了您的课堂。 请看一看。 在活动中实施监听器
public class ApiPersListAdapter extends RecyclerView.Adapter<ApiPersListAdapter.ViewHolder> {
public interface OnItemClickListener {
void onItemClick(ContentItem item);
}
private final OnItemClickListener listener;
TextView text1;
Handler handler =new Handler();
String s;
private Context context;
private List<Personne> list;
String nom;
public ApiPersListAdapter(Context context, List<Personne> list,OnItemClickListener listener) {
this.context = context;
this.list = list;
this.listener = listener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.recyclerview_api_list_item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.bind(items.get(position), listener);
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView nom_pre,email;
public ViewHolder(View itemView) {
super(itemView);
nom_pre = itemView.findViewById(R.id.nom_pren);
email = itemView.findViewById(R.id.email);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onItemClick(item);
}
});
您可以在onCreateViewHolder上尝试
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
View v = inflater.inflate(R.layout.recyclerview_api_list_item, null);
要获取或设置R.layout.recyclerview_api_list_item
recycleview的textview的值,您需要首先找到该视图,以便可以通过定义的视图访问它们。
v.findViewById(R.id.textviewID1);
v.findViewById(R.id.textviewID2);
然后返回视图
return new ViewHolder(v);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.