为了账号安全,请及时绑定邮箱和手机立即绑定

RecyclerView 单击并替换另一个活动中的图像

RecyclerView 单击并替换另一个活动中的图像

Smart猫小萌 2023-08-16 15:56:38
我对如何解决有关如何单击 RecyclerView 并从另一个活动(例如 MainActivity)更改图像的疑问有一些疑问。在图片中你可以看到我正在尝试做什么。我总共有 6 张图像,3 张小图像和另外 3 张大图像。在 MainActivity 的页脚中,我有 ReciclerView 加载 3 个小图像,我希望当它们单击 image_Small_2/item_Small_2 时,将中间的图像替换为 image_Large_2/item_Large_2。我不知道我是否解释得很好,我给你留下了截图和代码,看看你是否可以帮助我。提前致谢。PS 我使用 glide 库来加载图像。我的适配器 RecyclerViewpublic class AdaptadorX extends RecyclerView.Adapter<AdaptadorX.ViewHolder> {    private ArrayList<Items> itemsLi;    private Context context;    public static class ViewHolder extends RecyclerView.ViewHolder{        public ImageView idSrcImagen;        public ViewHolder(@NonNull View itemView) {            super(itemView);            idSrcImagen = itemView.findViewById(R.id.idImagen);        }    }    public AdaptadorX(ArrayList<Items> itemsListado, Context context_L){        itemsLi = itemsListado;        context = context_L;    }    @NonNull    @Override    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item, parent, false);        ViewHolder content = new ViewHolder(view);        return content;    }    @Override    public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {        final Items contarItems =  itemsLi.get(position);        Glide.with(context).load(contarItems.getxNombre_imagen()).into(holder.idSrcImagen);        holder.idSrcImagen.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Log.d("Mensaje_AdaptadorX.java", "Mi Posicion FOTO es: "+String.valueOf(position));            }        });    }    @Override    public int getItemCount() {        Log.d("Mensaje_Size_Tamaño", String.valueOf(itemsLi.size()));        return itemsLi.size();    }}
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您需要在活动中实现接口侦听器并将其传递给适配器。将其添加到您的适配器并通过构造函数传递它


interface OnImageClickListener{

    void onSelected(String url);

}

您的整个适配器应该如下所示。


public class AdaptadorX extends RecyclerView.Adapter<AdaptadorX.ViewHolder> {

private ArrayList<Items> itemsLi;

private Context context;

pruvate OnImageClickListener listener;


interface OnImageClickListener{

    void onSelected(String url);

}


public static class ViewHolder extends RecyclerView.ViewHolder{

    public ImageView idSrcImagen;


    public ViewHolder(@NonNull View itemView) {

        super(itemView);

        idSrcImagen = itemView.findViewById(R.id.idImagen);

    }

}


public AdaptadorX(ArrayList<Items> itemsListado, Context context_L, OnImageClickListener listener){

    itemsLi = itemsListado;

    context = context_L;

    this.listener = listener;

}


@NonNull

@Override

public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item, parent, false);

    ViewHolder content = new ViewHolder(view);

    return content;

}


@Override

public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {

    final Items contarItems =  itemsLi.get(position);

    Glide.with(context).load(contarItems.getxNombre_imagen()).into(holder.idSrcImagen);

    holder.idSrcImagen.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View view) {

            listener.onSelected(contarItems.getxNombre_imagen())

        }

    });

}


@Override

public int getItemCount() {

    Log.d("Mensaje_Size_Tamaño", String.valueOf(itemsLi.size()));

    return itemsLi.size();

}

}


在您的 Activity 中,您实现此接口并将其传递给适配器。


public class MainActivity extends AppCompatActivity implements OnImageClickListener   {

public ImageView idImgHead;

private ArrayList<Items> items;

private RecyclerView idRecyclerView;

private RecyclerView.Adapter adapter;

private RecyclerView.LayoutManager layoutManager;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    idRecyclerView = findViewById(R.id.idRecyclerView);

    idImgHead = findViewById(R.id.idImgHead);

    Glide.with(this).load("https://www.midominio.com/Imagen_GRANDE_head_01.jpg").into(idImgHead); //IMAGE BIG

    listadoXhead();

}


@Override

public onSelected(String url) {

     Glide.with(this).load(url).into(idImgHead);

}


private void listadoXhead() {

    ArrayList<Items> items = new ArrayList<>();

    items.add(new Items("https://www.midominio.com/Imagen_Pequeña_head_01.jpg")); //IMAGE Small

    items.add(new Items("https://www.midominio.com/Imagen_Pequeña_head_02.jpg")); //IMAGE Small

    items.add(new Items("https://www.midominio.com/Imagen_Pequeña_head_03.jpg")); //IMAGE Small

    idRecyclerView.setHasFixedSize(true);

    layoutManager = new LinearLayoutManager(MainActivity.this);

    ((LinearLayoutManager) layoutManager).setOrientation(RecyclerView.HORIZONTAL);

    adapter = new AdaptadorX(items, MainActivity.this, this);

    idRecyclerView.setLayoutManager(layoutManager);

    idRecyclerView.setAdapter(adapter);

}

}


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信