gridview模仿radiobutton的单选

来源:互联网 发布:codeblocks中文版mac 编辑:程序博客网 时间:2024/05/16 05:41

1.首先 int flag  = -1;让其来表示,当前被选中的item,int flag2 = -1;来表示上一个被选中的item。

那么我们就需要考虑两种情况了:(1)flag = flag2(2)flag!=flag2;太罗嗦了  还是直接上代码吧

class TypeAdapter extends BaseAdapter {
        private int flag;
        private ArrayList<String> arrayList;
        //记录被选中item的位置
        private int pn = -1;
        private int ppn = -1;
        public TypeAdapter(ArrayList<String> arrayList,int flag) {
            this.arrayList = arrayList;
            this.flag = flag;
        }
        
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return arrayList.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }
        
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = View.inflate(FilmFindPageActivity.this, R.layout.gridview_adapter, null);
            TextView tv = (TextView) view.findViewById(R.id.gridview_adapter_tv);
            tv.setText(arrayList.get(position));
            tv.setTag(position);
            if(ppn == position){
                tv.setBackgroundResource(0);
            }
            if(pn == position){
                tv.setBackgroundResource(R.drawable.back_image);
            }
            if(pn == ppn){
                tv.setBackgroundResource(0);
            }
            tv.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    TextView tv = (TextView) v;
                    int i = (Integer) tv.getTag();
                    if(pn!=i){
                        ppn = pn;
                        pn = i;
                    }else {
                        ppn = pn;
                    }
                    switch (flag) {
                    case 1:
                        selectStrs[0]=tv.getText().toString();
                        break;
                    case 2:
                        selectStrs[1]=tv.getText().toString();
                        break;
                    case 3:
                        selectStrs[2]=tv.getText().toString();
                        break;
                    }
                    notifyDataSetChanged();
                }
            });
            return view;
        }
    }


0 0
原创粉丝点击