微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Android 的 gridview 中一次更改多个图像?

如何解决如何在 Android 的 gridview 中一次更改多个图像?

我正在使用 Java 开发 AndroidStudio

我在 gridview 中有很多图像视图。 我正在尝试应用同时影响多个图像视图的点击事件

我想做的是: 当一个 imageview 被点击时,另一个 imageview 没有被点击来改变它的图像。

例如,在同一个gridview中有两个imageview A和B。如果我单击 A 图像视图,则 A 和 B 图像视图都设置为不同的图像源。

我能做的只是改变点击的图像视图。 我想知道如何访问 gridview 中未单击的项目。 我在适配器内制作了 onclick 侦听器。

public View getView(int position,View convertView,ViewGroup parent) {
        convertView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.ingrid,parent,false);

            ImageView blackorwhite = convertView.findViewById(R.id.blackOrWhite);

            Integer val = mData.get(position);
            blackorwhite.setimageResource(blockColor.get(val));
            blackorwhite.setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    blackorwhite.setimageResource(R.color.white);
                }
            });

解决方法

你可以做一个界面回调来知道哪个项目被点击,例如这是你的界面

interface OnClickListener {
    void onClick(int position)
}

并将这个接口传递给你的适配器, 在 getView 方法中,无论何时单击视图,您都可以调用接口的 onClick 方法

这是示例代码

interface OnClickListener {
    void onClick(int position);
}

public class GridViewAdapter extends BaseAdapter {


    private List<String> list;
    private OnClickListener listener;

    private Context context;

    public GridViewAdapter(Context context,List<String> list,OnClickListener listener){
        this.listener = listener;
        this.context = context;
        this.list = list;
    }


    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position,View convertView,ViewGroup parent) {

       View  view = LayoutInflater.from(context).inflate(ur layout);


       view.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               listener.onClick(position);
           }
       });

        return view;
    }
}

要启动适配器,您可以使用此代码,

 GridViewAdapter adapter = new GridViewAdapter(context,imageList,new OnClickListener() {
            @Override
            public void onClick(int position) {
                // this method called every time an view get clicked
                // and u can change the DataSet which now is imageList
               // imageList.set(position,"something new ");
                // after the change of DataSet u should cal the notifyDataSetChanged
                adapter.notifyDataSetChanged();
            }
        });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。