我正在使用一个片段显示带有项目的回收视图。
而且我有一个用于recyclerview的Adapter类。
每次用户单击recyclerview项时,我都需要从片段TextView中更改文本。
这是适配器类中的onClick方法:
@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中的文本。
编辑
适配器类:
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();
}
}
}
答案 0 :(得分:1)
您可以创建一个Interface并使用该接口在textview中设置setText,如下所示:-
接口:-
public interface IOnItemClickListener {
void onItemClick(String text);
}
在片段中使用Interface并将此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");
}
});
答案 1 :(得分:1)
您可以使用以下方式
添加片段字段,并像这样更改您的适配器构造器,
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.
}