Android ListView中 每一項都有不同的布局

來源:互聯網
上載者:User

標籤:

實現代碼

Adapter的代碼

其中:ViewHolder分別是三個不同的布局,也就是ListView中每一項的布局

TYPE_1...是三種類型.

在使用不同布局的時候,getItemViewType和getViewType不能少,一般是不用這兩個函數的重載的

    class RunRankAdapter extends BaseAdapter {        ArrayList<HashMap<String, Object>> ls;        Context mContext;        LinearLayout linearLayout = null;        LayoutInflater inflater;        TextView tex;        final int VIEW_TYPE = 3;        final int TYPE_1 = 0;        final int TYPE_2 = 1;        final int TYPE_3 = 2;        public RunRankAdapter(Context context,                ArrayList<HashMap<String, Object>> list) {            ls = list;            mContext = context;        }        @Override        public int getCount() {            return ls.size();        }        @Override        public Object getItem(int position) {            return ls.get(position);        }        @Override        public long getItemId(int position) {            return 0;        }        // 每個convert view都會調用此方法,獲得當前所需要的view樣式        @Override        public int getItemViewType(int position) {            int p = position;            if (p == 0)                return TYPE_1;            else if (p == 1)                return TYPE_2;            else                return TYPE_3;        }        @Override        public int getViewTypeCount() {            return 3;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder1 holder1 = null;            ViewHolder2 holder2 = null;            ViewHolder3 holder3 = null;            int type = getItemViewType(position);            if (convertView == null) {                inflater = LayoutInflater.from(mContext);                // 按當前所需的樣式,確定new的布局                switch (type) {                case TYPE_1:                    convertView = inflater.inflate(R.layout.item_runrank1,                            parent, false);                    holder1 = new ViewHolder1();                    holder1.rank1 = (TextView) convertView                            .findViewById(R.id.tv_list1_rank);                    holder1.time1 = (TextView) convertView                            .findViewById(R.id.tv_list1_time);                    convertView.setTag(holder1);                    break;                case TYPE_2:                    convertView = inflater.inflate(R.layout.item_runrank2,                            parent, false);                    holder2 = new ViewHolder2();                    holder2.rank2 = (TextView) convertView                            .findViewById(R.id.tv_list2_rank);                    holder2.time2 = (TextView) convertView                            .findViewById(R.id.tv_list2_time);                    convertView.setTag(holder2);                    break;                case TYPE_3:                    convertView = inflater.inflate(R.layout.item_runrank3,                            parent, false);                    holder3 = new ViewHolder3();                    holder3.rank3 = (TextView) convertView                            .findViewById(R.id.tv_list3_rank);                    holder3.time3 = (TextView) convertView                            .findViewById(R.id.tv_list3_time);                    convertView.setTag(holder3);                    break;                default:                    break;                }            } else {                switch (type) {                case TYPE_1:                    holder1 = (ViewHolder1) convertView.getTag();                    break;                case TYPE_2:                    holder2 = (ViewHolder2) convertView.getTag();                    break;                case TYPE_3:                    holder3 = (ViewHolder3) convertView.getTag();                    break;                }            }            // 設定資源            switch (type) {            case TYPE_1:                holder1.rank1.setText("" + (position + 1));                holder1.time1.setText(ls.get(position).get("time").toString());                break;            case TYPE_2:                holder2.rank2.setText("" + (position + 1));                holder2.time2.setText(ls.get(position).get("time").toString());                holder2.totaldistance2.setText(ls.get(position)                break;            case TYPE_3:                holder3.rank3.setText("" + (position + 1));                holder3.time3.setText(ls.get(position).get("time").toString());                break;            }            return convertView;        }        public class ViewHolder1 {            TextView rank1;            TextView time1;        }        public class ViewHolder2 {            TextView rank2;            TextView time2;        }        public class ViewHolder3 {            TextView rank3;            TextView time3;        }    }

使用方式:

聲明並定義自己的Adapter,在ListView中設定他的Adapter

private RunRankAdapter runRankAdapter;  ArrayList<HashMap<String, Object>> runRank;  ListView lv_runRank;runRank = new ArrayList<HashMap<String, Object>>();  runRankAdapter = new RunRankAdapter(this, runRank);  lv_runRank = (ListView) findViewById(R.id.lv_runRank);  lv_runRank.setAdapter(runRankAdapter);

 

Android ListView中 每一項都有不同的布局

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.