Android自定義單選,自定義選中狀態


如圖,此布局用GrildView實現,彈出框由Activity的dialog樣式實現。

屏蔽系統GrildView點擊背景黃色:

grildview.setSelector(new ColorDrawable(Color.TRANSPARENT));

實現數據源自定義Adapter

public class PeoPleNumAdapter extends BaseAdapter {

    public List<PeopleNum> FiltArray;
    public static HashMap<Integer, Boolean> isselected;
    LayoutInflater inflater;
    int pos;

    public PeoPleNumAdapter(Context context,List<PeopleNum> PeopleNumList,int pos) {
        super();
        inflater = LayoutInflater.from(context);
        this.FiltArray = PeopleNumList;
        this.pos = pos;
        isselected = new HashMap<Integer, Boolean>();
        initData();
    }

    public void initData() {
        for (int i = 0; i < FiltArray.size(); i++) {
            PeopleNum peo = FiltArray.get(i);
            if(i!=pos)
            getIsSelected().put(i, false);
            else
            getIsSelected().put(i, true);
        }
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return FiltArray.size();
    }

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

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        // TODO Auto-generated method stub

        if (view == null) {

            view = inflater.inflate(R.layout.people_grild, null);
            TextView spec = (TextView) view.findViewById(R.id.peoplenum);
            final ImageView img = (ImageView) view.findViewById(R.id.numselect);
            PeopleNum peo = FiltArray.get(position);
            spec.setText(peo.getNum());
            if (getIsSelected().get(position)) {
                img.setVisibility(View.VISIBLE);
            } else {
                img.setVisibility(View.GONE);
            }
        }
        return view;
    }

    public static HashMap<Integer, Boolean> getIsSelected() {
        return isselected;
    }

    public static void setIsSelected(HashMap<Integer, Boolean> isSelect) {
        PeoPleNumAdapter.isselected = isSelect;
    }
}

Activity中實現點擊:

grildview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                PeoPleNumAdapter.getIsSelected().put(position, true);
                adapter = new PeoPleNumAdapter(context, PeopleNumList, position);
                grildview.setAdapter(adapter);
            }
        });

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM