Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用GridView android进行多项选择?_Android_Gridview_Multiple Choice - Fatal编程技术网

如何使用GridView android进行多项选择?

如何使用GridView android进行多项选择?,android,gridview,multiple-choice,Android,Gridview,Multiple Choice,这就是我使用adapter实现Gridview的方法,有人能告诉我如何修改这些代码以获得多选效果吗?以下是我的代码,敬请告知,并表示万分感谢 //privateList<Condiment> CondimentList; CondimentList = getCondimentDescription(productcode); condimentGrid.setAdapter(new condimentlist()); public class condimentlist ex

这就是我使用adapter实现Gridview的方法,有人能告诉我如何修改这些代码以获得多选效果吗?以下是我的代码,敬请告知,并表示万分感谢

//privateList<Condiment> CondimentList;
CondimentList = getCondimentDescription(productcode); 
condimentGrid.setAdapter(new condimentlist());

 public class condimentlist extends BaseAdapter {

        LayoutInflater mInflater;

        public condimentlist() {
            mInflater = LayoutInflater.from(cart_list.this);
        }

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

        @Override
        public Object getItem(int position) {
            return null;
        }

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

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

            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.condiment_item, null);
            }

            Condiment myObj = CondimentList.get(position);
        Button CondimentItem  = (Button) convertView.findViewById(R.id.condimentItem);
        CondimentItem.setText("" +myObj.getCondimentDescription());


        return convertView;
    }

}
//私人调味品清单;
调味品列表=获取调味品描述(productcode);
setAdapter(新的调味品列表());
公共类调味品列表扩展BaseAdapter{
拉平机;
公共调味品清单(){
mInflater=LayoutInflater.from(cart\u list.this);
}
@凌驾
public int getCount(){
返回调味品列表。size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=mInflater.充气(R.布局.调味品项目,空);
}
调味品myObj=调味品列表.get(位置);
按钮调味品项=(按钮)convertView.findViewById(R.id.consumentItem);
调味品项.setText(“+myObj.getconsumentdescription());
返回视图;
}
}

只需在代码中添加少量内容,即可在调味品类模型中提供选定值,并按如下方式使用

//privateList<Condiment> CondimentList;
CondimentList = getCondimentDescription(productcode); 
condimentGrid.setAdapter(new condimentlist());

 public class condimentlist extends BaseAdapter {

        LayoutInflater mInflater;

        public condimentlist() {
            mInflater = LayoutInflater.from(cart_list.this);
        }

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

        @Override
        public Object getItem(int position) {
            return null;
        }

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

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

            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.condiment_item, null);
            }

            final Condiment myObj = CondimentList.get(position);
            Button CondimentItem  = (Button) convertView.findViewById(R.id.condimentItem);
            CondimentItem.setText("" +myObj.getCondimentDescription());
            CondimentItem.setSelected(myObj.isSelected());
            CondimentItem.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myObj.setSelected(!myObj.isSelected());
                    v.setSelected(myObj.isSelected());
                }
            });


        return convertView;
    }

}
//私人调味品清单;
调味品列表=获取调味品描述(productcode);
setAdapter(新的调味品列表());
公共类调味品列表扩展BaseAdapter{
拉平机;
公共调味品清单(){
mInflater=LayoutInflater.from(cart\u list.this);
}
@凌驾
public int getCount(){
返回调味品列表。size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=mInflater.充气(R.布局.调味品项目,空);
}
最终调味品myObj=调味品列表.get(位置);
按钮调味品项=(按钮)convertView.findViewById(R.id.consumentItem);
调味品项.setText(“+myObj.getconsumentdescription());
调味品项.setSelected(myObj.isSelected());
consumentItem.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
myObj.setSelected(!myObj.isSelected());
v、 setSelected(myObj.isSelected());
}
});
返回视图;
}
}

为什么不试试recycler view呢?看看这个,如果我使用recycler view,会有什么不同?你只需要调用gridlayout管理器而不是lineallayout管理器,它比listview和GridView有很多优点。如果你想将适配器项显示为选中项,那么只需侦听项的onClick事件和回调侦听器内部的onClick事件即可您可以将项目的状态更新为选中状态,在getView中,您可以检查项目是否已选中,然后在项目上显示某种选定类型的覆盖或任何您的设计要求。如果你想取得其他成就,请明确定义。