【问题标题】:How to change multiple image at once in gridview in Android?如何在Android的gridview中一次更改多个图像?
【发布时间】:2021-04-22 05:52:34
【问题描述】:

我正在使用 Java 开发 AndroidStudio。

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

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

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

我能做的就是只改变点击的图像视图。 我想知道如何访问 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);
                }
            });

【问题讨论】:

    标签: java android gridview adapter


    【解决方案1】:

    您可以进行界面回调以了解单击了哪个项目,例如这是您的界面

    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();
                }
            });
    

    【讨论】:

    • 感谢它的超级帮助。我从来不知道我可以更新我的数据集(Imagelist)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多