ListView 多种Item的加载

来源:互联网 发布:mysql 5.7.20 编辑:程序博客网 时间:2024/06/05 10:05

item_title.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="match_parent"              android:layout_height="match_parent">    <TextView        android:id="@+id/item_title"        android:background="#ccc"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>

item_content.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="match_parent"              android:layout_height="match_parent">    <TextView        android:id="@+id/item_content"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>

主布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main2"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.yongyida.robot.voice.test.Main2Activity">    <TextView        android:textSize="30sp"        android:text="多种item的ListView"        android:gravity="center"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <ListView        android:id="@+id/listView"        android:layout_width="match_parent"        android:layout_height="wrap_content">    </ListView>


public class Main2Activity extends AppCompatActivity {    private ListView listView;    private ArrayList<String> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        init();    }    private void init(){        listView = (ListView) findViewById(R.id.listView);        list = new ArrayList<>();        list.add("A");        for(int i = 1 ;i < 6; i++){            list.add("A"+i);        }        list.add("B");        for(int i = 1 ;i < 11; i++){            list.add("B"+i);        }        MultiItemAdapter multiItemAdapter = new MultiItemAdapter(Main2Activity.this,list);        listView.setAdapter(multiItemAdapter);    }}

public class MultiItemAdapter extends BaseAdapter {    private Context context;    private static final int TYPE_O = 0;    private static final int TYPE_1 = 1;    private static final int TYPE_COUNT = 2;    private ArrayList<String> list;    public MultiItemAdapter(Context context,ArrayList<String> list){        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list == null ? 0 : list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public int getItemViewType(int position) {        return list.get(position).length() == 1 ? TYPE_O : TYPE_1;    }    @Override    public int getViewTypeCount() {        return TYPE_COUNT;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        View view = null;        ViewHolder1 viewHolder1 = null;        ViewHolder2 viewHolder2 = null;        int type = getItemViewType(position);        if(convertView == null){            switch (type){                case TYPE_O:                    view = LayoutInflater.from(context).inflate(R.layout.item_title,null);                    viewHolder1 = new ViewHolder1();                    viewHolder1.title = (TextView) view.findViewById(R.id.item_title);                    viewHolder1.title.setText(list.get(position));                    view.setTag(viewHolder1);                    break;                case TYPE_1:                    view = LayoutInflater.from(context).inflate(R.layout.item_content,null);                    viewHolder2 = new ViewHolder2();                    viewHolder2.content = (TextView) view.findViewById(R.id.item_content);                    viewHolder2.content.setText(list.get(position));                    view.setTag(viewHolder2);                    break;            }        }else{            switch (type){                case TYPE_O:                    view = convertView;                    viewHolder1 = (ViewHolder1) view.getTag();                    viewHolder1.title.setText(list.get(position));                    break;                case TYPE_1:                    view = convertView;                    viewHolder2 = (ViewHolder2) view.getTag();                    viewHolder2.content.setText(list.get(position));                    break;            }        }        return view;    }    class ViewHolder1{        TextView title;    }    class ViewHolder2{        TextView content;    }}


0 0
原创粉丝点击