正在从适配器更新片段 TextView class
Updating fragment TextView from adapter class
我正在使用一个片段来显示带有项目的回收视图。
我有一个用于 recyclerview 的适配器 class。
每次用户点击 recyclerview 项目时,我都需要更改片段 TextView 中的文本。
这是适配器中的 onClick 方法 class:
@Override
public void onClick(View v) {
int position = getAdapterPosition();
//showPopupMenu(v, position);
String positi = marcaList.get(position).getnombre();
Integer positid = marcaList.get(position).getId();
Log.d("HOLA PERFIL", "RESPONSE 2 valor=" + position);
Toast.makeText(mCtx,"Seleccionados dispositivos de la marca "+positi, Toast.LENGTH_SHORT).show();
SharedPreferences prefs3 =
mCtx.getSharedPreferences(MISDATOS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor3 = prefs3.edit();
editor3.putString("nombreMarcaNuevoDisp",positi);
editor3.putInt("idMarcaNuevoDisp",positid);
editor3.apply();
}
我需要用所选列表项中的值更新片段中 TextView 中的文本。
编辑
适配器Class:
public class MarcasAdapterNuevoDisp extends RecyclerView.Adapter<MarcasAdapterNuevoDisp.ProductViewHolder> {
public static String MISDATOS= "MisDatos";
private Context mCtx;
private List<Marca> marcaList;
private SharedPreferences mPref;
public FragmentManager f_manager;
public MarcasAdapterNuevoDisp(Context mCtx, List<Marca> marcaList) {
this.mCtx = mCtx;
this.marcaList = marcaList;
}
public interface OnDataChangeListener{
public void onDataChanged(int size);
}
@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.marcas_list, null);
return new ProductViewHolder(view);
}
@Override
public void onBindViewHolder(ProductViewHolder holder, int position) {
Marca marca = marcaList.get(position);
String url = "https://jogua.es/administrar/application/admin/iconos/";
//loading the image
Glide.with(mCtx)
.load(url+marca.geticono())
.into(holder.imageView);
}
@Override
public int getItemCount() {
return marcaList.size();
}
class ProductViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView textViewTitle;
ImageView imageView;
public ProductViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
//showPopupMenu(v, position);
String positi = marcaList.get(position).getnombre();
Integer positid = marcaList.get(position).getId();
Log.d("HOLA PERFIL", "RESPONSE 2 valor=" + position);
Toast.makeText(mCtx,"Seleccionados dispositivos de la marca "+positi, Toast.LENGTH_SHORT).show();
SharedPreferences prefs3 =
mCtx.getSharedPreferences(MISDATOS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor3 = prefs3.edit();
editor3.putString("nombreMarcaNuevoDisp",positi);
editor3.putInt("idMarcaNuevoDisp",positid);
editor3.apply();
}
}
}
您可以创建一个界面并使用该界面在您的文本视图中设置文本,如下所示:-
界面:-
public interface IOnItemClickListener {
void onItemClick(String text);
}
在片段中使用接口并在您的适配器构造函数中传递此 iOnItemClickListener:-
private IOnItemClickListener iOnItemClickListener = new IOnItemClickListener() {
@Override
public void onItemClick(String text) {
yourTextView.setText(text);
}
};
并在您的适配器中创建一个对象:-
private IOnItemClickListener iClickListener;
public SearchAdapter(Context ctx, IOnItemClickListener iClickListener, ArrayList<SearchResponse> arrayList) {
this.ctx = ctx;
**this.iClickListener = iClickListener;**
this.arrayList = arrayList;
}
当您点击项目时;-
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iClickListener.onItemClick("pass your text");
}
});
您可以使用以下方式,
为片段添加字段并像这样更改适配器构造函数,
private MarcasFragment fragment;
public MarcasAdapterNuevoDisp(MarcasFragment fragment, List<Marca> marcaList) {
this.mCtx = fragment.getActivity();
this.fragment = fragment;
this.marcaList = marcaList;
}
然后在你的onclick方法中,
@Override
public void onClick(View v) {
fragment.textView.setText(yourString); //As your textview is public, you can access it from here.
}
我正在使用一个片段来显示带有项目的回收视图。
我有一个用于 recyclerview 的适配器 class。
每次用户点击 recyclerview 项目时,我都需要更改片段 TextView 中的文本。
这是适配器中的 onClick 方法 class:
@Override
public void onClick(View v) {
int position = getAdapterPosition();
//showPopupMenu(v, position);
String positi = marcaList.get(position).getnombre();
Integer positid = marcaList.get(position).getId();
Log.d("HOLA PERFIL", "RESPONSE 2 valor=" + position);
Toast.makeText(mCtx,"Seleccionados dispositivos de la marca "+positi, Toast.LENGTH_SHORT).show();
SharedPreferences prefs3 =
mCtx.getSharedPreferences(MISDATOS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor3 = prefs3.edit();
editor3.putString("nombreMarcaNuevoDisp",positi);
editor3.putInt("idMarcaNuevoDisp",positid);
editor3.apply();
}
我需要用所选列表项中的值更新片段中 TextView 中的文本。
编辑
适配器Class:
public class MarcasAdapterNuevoDisp extends RecyclerView.Adapter<MarcasAdapterNuevoDisp.ProductViewHolder> {
public static String MISDATOS= "MisDatos";
private Context mCtx;
private List<Marca> marcaList;
private SharedPreferences mPref;
public FragmentManager f_manager;
public MarcasAdapterNuevoDisp(Context mCtx, List<Marca> marcaList) {
this.mCtx = mCtx;
this.marcaList = marcaList;
}
public interface OnDataChangeListener{
public void onDataChanged(int size);
}
@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.marcas_list, null);
return new ProductViewHolder(view);
}
@Override
public void onBindViewHolder(ProductViewHolder holder, int position) {
Marca marca = marcaList.get(position);
String url = "https://jogua.es/administrar/application/admin/iconos/";
//loading the image
Glide.with(mCtx)
.load(url+marca.geticono())
.into(holder.imageView);
}
@Override
public int getItemCount() {
return marcaList.size();
}
class ProductViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView textViewTitle;
ImageView imageView;
public ProductViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
//showPopupMenu(v, position);
String positi = marcaList.get(position).getnombre();
Integer positid = marcaList.get(position).getId();
Log.d("HOLA PERFIL", "RESPONSE 2 valor=" + position);
Toast.makeText(mCtx,"Seleccionados dispositivos de la marca "+positi, Toast.LENGTH_SHORT).show();
SharedPreferences prefs3 =
mCtx.getSharedPreferences(MISDATOS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor3 = prefs3.edit();
editor3.putString("nombreMarcaNuevoDisp",positi);
editor3.putInt("idMarcaNuevoDisp",positid);
editor3.apply();
}
}
}
您可以创建一个界面并使用该界面在您的文本视图中设置文本,如下所示:-
界面:-
public interface IOnItemClickListener {
void onItemClick(String text);
}
在片段中使用接口并在您的适配器构造函数中传递此 iOnItemClickListener:-
private IOnItemClickListener iOnItemClickListener = new IOnItemClickListener() {
@Override
public void onItemClick(String text) {
yourTextView.setText(text);
}
};
并在您的适配器中创建一个对象:-
private IOnItemClickListener iClickListener;
public SearchAdapter(Context ctx, IOnItemClickListener iClickListener, ArrayList<SearchResponse> arrayList) {
this.ctx = ctx;
**this.iClickListener = iClickListener;**
this.arrayList = arrayList;
}
当您点击项目时;-
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iClickListener.onItemClick("pass your text");
}
});
您可以使用以下方式,
为片段添加字段并像这样更改适配器构造函数,
private MarcasFragment fragment;
public MarcasAdapterNuevoDisp(MarcasFragment fragment, List<Marca> marcaList) {
this.mCtx = fragment.getActivity();
this.fragment = fragment;
this.marcaList = marcaList;
}
然后在你的onclick方法中,
@Override
public void onClick(View v) {
fragment.textView.setText(yourString); //As your textview is public, you can access it from here.
}