1. 程式人生 > >Android開發-listview實現多條目展示

Android開發-listview實現多條目展示

如果我們的listview做的很好了 那麼多條目對你來說就很簡單了,因為多條目是基於listview的 它們只是在介面卡中有所不同

現在我們來看一下介面卡
public class MyAdapter extends BaseAdapter {

	private ArrayList<JsonBean.NewslistBean> list;
    private Context context;

    public MyAdapter(ArrayList<JsonBean.NewslistBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getItemViewType(int position) {
        if (position%2==0){
            //返回第一種檢視--左邊一張圖片--右邊是標題和內容
            return 0;
        }else{
            //返回第二種檢視--上邊是標題  下邊三張圖片
            return 1;
        }
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int type = getItemViewType( position );
        switch (type){
            case 0://第一種檢視的情況
                Hoilder1 hoilder1;
                if (convertView == null) {
                    convertView= View.inflate( context, R.layout.list_item, null );
                    //新建一個Hoilder1
                    hoilder1 = new Hoilder1();
                    hoilder1.img1=convertView.findViewById( R.id.img1 );
                    hoilder1.tv_title1=convertView.findViewById( R.id.tv_title1 );
                    hoilder1.tv_description1=convertView.findViewById( R.id.tv_description1 );
                    convertView.setTag( hoilder1 );
                }else{
                    hoilder1= (Hoilder1)convertView.getTag();
                }
                //給控制元件賦值
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder1.img1 );
                hoilder1.tv_title1.setText( list.get( position ).getTitle() );
                hoilder1.tv_description1.setText( list.get( position ).getDescription() );
                break;

            case 1://第二種檢視的情況
                Hoilder2 hoilder2;
                if (convertView == null) {
                    convertView= View.inflate( context, R.layout.list_item1, null );
                    //新建一個Hoilder2
                    hoilder2 = new Hoilder2();
                    hoilder2.img2_1=convertView.findViewById( R.id.img2_1 );
                    hoilder2.img2_2=convertView.findViewById( R.id.img2_2 );
                    hoilder2.img2_3=convertView.findViewById( R.id.img2_3 );
                    hoilder2.tv_description2=convertView.findViewById( R.id.tv_description2);
                    convertView.setTag( hoilder2 );
                }else{
                    hoilder2= (Hoilder2)convertView.getTag();
                }
                //給控制元件賦值
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_1);
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_2 );
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_3 );
                hoilder2.tv_description2.setText( list.get( position ).getDescription() );
                break;
        }
        return convertView;
    }

    //新建一個Hoilder1
    class Hoilder1{
        ImageView img1;
        TextView tv_title1;
        TextView tv_description1;
    }
    //新建一個Hoilder2
    class Hoilder2{
        ImageView img2_1;
        ImageView img2_2;
        ImageView img2_3;
        TextView tv_description2;
    }

}