从适配器类更新片段 TextView

mva*_*sco 3 android android-adapter android-recyclerview

我正在使用一个片段来显示带有项目的回收视图。

我有一个用于 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();





        } 
Run Code Online (Sandbox Code Playgroud)

我需要的是使用所选列表项中的值更新片段中 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();





        }




    }
}
Run Code Online (Sandbox Code Playgroud)

Gun*_*lan 5

您可以使用以下方式,

添加片段字段并更改适配器构造函数,如下所示,

private MarcasFragment fragment;
public MarcasAdapterNuevoDisp(MarcasFragment fragment, List<Marca> marcaList) {
    this.mCtx = fragment.getActivity();
    this.fragment = fragment;
    this.marcaList = marcaList;

}
Run Code Online (Sandbox Code Playgroud)

然后在你的 onclick 方法中,

@Override
public void onClick(View v) {
    fragment.textView.setText(yourString); //As your textview is public, you can access it from here.
}
Run Code Online (Sandbox Code Playgroud)