ListView多条目加载

来源:互联网 发布:java collections 编辑:程序博客网 时间:2024/06/05 11:35

     在listview中有许多条目,而许多条目可能类型不一样,展示的效果可能有Image+textView,也可能只是TextView。

所以,我们需要在listview的适配器中,进行判断加载。

   

     下面是效果图



     下面是需要加载的布局文件

     1:主布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"   >    <ListView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/listview"        ></ListView></RelativeLayout>

     2.需要的三个布局文件类型

         ①布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:padding="10dp"    android:orientation="horizontal">    <TextView        android:id="@+id/tv_1"        android:text="1"        android:paddingRight="5dp"        android:layout_centerVertical="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        />    <CheckBox        android:id="@+id/cb"        android:checked="false"        android:focusable="false"        android:layout_alignParentRight="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        /></RelativeLayout>

   ②布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/tv_2"        android:text="2"        android:paddingRight="5dp"        android:layout_centerVertical="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content"></TextView></LinearLayout>

        ③布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:padding="10dp"    android:orientation="horizontal" >    <TextView        android:layout_gravity="center_vertical"        android:id="@+id/tv_3"        android:text="3"        android:layout_marginRight="5dp"        android:layout_centerVertical="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content">    </TextView>    <ImageView        android:id="@+id/iv_3"        android:layout_alignParentRight="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></RelativeLayout>


     代码文件

import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.Adapter;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    private ListView listview;    private ArrayList<String> mList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化控件        listview = (ListView) findViewById(R.id.listview);        //初始化数据        mList = new ArrayList<String>();        for(int i = 0; i< 100; i++){            mList.add(i+"");        }        //设置适配器        listview.setAdapter(new MyAdapter());    }    //适配器    class MyAdapter extends BaseAdapter {        final int TYPE_1 = 0;        final int TYPE_2 = 1;        final int TYPE_3 = 2;        @Override        public int getCount() {            return mList.size();        }        @Override        public Object getItem(int position) {            return mList.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        //获得题目类型总数        @Override        public int getViewTypeCount() {            return 3;        }        //获得条目类型对应条目        @Override        public int getItemViewType(int position) {            int p=position%3;            if(p == 0){                return TYPE_1;            }else if(p == 1 ){                return TYPE_2;            }else if(p == 2){                return TYPE_3;            }else{                return TYPE_1;            }        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder = new ViewHolder();            int itemViewType = getItemViewType(position);            if(convertView == null){                switch (itemViewType){                    case 0:                        convertView = View.inflate(MainActivity.this,R.layout.items,null);                        holder.checkBox= (CheckBox) convertView.findViewById(R.id.cb);                        holder.textView= (TextView) convertView.findViewById(R.id.tv_1);                        break;                    case 1:                        convertView = View.inflate(MainActivity.this,R.layout.item2,null);                        holder.textView= (TextView) convertView.findViewById(R.id.tv_2);                        break;                    case 2:                        convertView = View.inflate(MainActivity.this,R.layout.item3,null);                        holder.textView= (TextView) convertView.findViewById(R.id.tv_3);                        holder.imageView= (ImageView) convertView.findViewById(R.id.iv_3);                        break;                }                convertView.setTag(holder);            }else{                holder= (ViewHolder) convertView.getTag();            }            switch (itemViewType){                case 0:                    holder.checkBox.setChecked(true);                    holder.textView.setText("杨栓"+mList.get(position));                    break;                case 1:                    holder.textView.setText("杨栓"+mList.get(position));                    break;                case 2:                    holder.imageView.setBackgroundResource(R.mipmap.ic_launcher);                    holder.textView.setText("杨栓"+mList.get(position));                    break;            }            return convertView;        }    }    class ViewHolder{        CheckBox checkBox;        TextView textView;        ImageView imageView;    }}

    多加练习,必有收益。同勉。

 

原创粉丝点击