正在从适配器更新片段 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.
}