package com.example.e.listview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView listView; private List<Bean> list; private ListViewAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView); list = new ArrayList<>(); for (int i = 0; i < 50; i++) { Bean bean=new Bean("item----"+i); list.add(bean); } adapter = new ListViewAdapter(this,list); listView.setAdapter(adapter); } }
package com.example.e.listview; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; /** * Created by e on 2017/5/18. */ public class ListViewAdapter extends BaseAdapter { private Context context; private List<Bean> list; private final int TYPE1 = 0; private final int TYPE2 = 1; private final int TYPE3 = 2; public ListViewAdapter(Context context, List<Bean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { int i = getItemViewType(position); Holder1 holder1 = null; if (convertView == null) { holder1 = new Holder1(); switch (i) { case TYPE1: convertView = View.inflate(context, R.layout.item1, null); holder1.tv = (TextView) convertView.findViewById(R.id.tv1); break; case TYPE2: convertView = View.inflate(context, R.layout.item2, null); holder1.tv2 = (TextView) convertView.findViewById(R.id.tv2); break; case TYPE3: convertView = View.inflate(context, R.layout.item3, null); holder1.tv3 = (TextView) convertView.findViewById(R.id.tv3); break; } convertView.setTag(holder1); } else { holder1 = (Holder1) convertView.getTag(); } Bean bean = list.get(position); switch (i) { case TYPE1: holder1.tv.setText(list.get(position).getText()); break; case TYPE2: holder1.tv2.setText(list.get(position).getText()); break; case TYPE3: holder1.tv3.setText(list.get(position).getText()); break; } return convertView; } @Override public int getItemViewType(int position) { return position % getViewTypeCount(); } @Override public int getViewTypeCount() { return 3; } class Holder1 { TextView tv; TextView tv2; TextView tv3; } }
package com.example.e.listview; /** * Created by e on 2017/5/18. */ public class Bean { private String text; private String text1; private String text2; private int type; public int getType() { return type; } public void setType(int type) { this.type = type; } public String getText2() { return text2; } public void setText2(String text2) { this.text2 = text2; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getText1() { return text1; } public void setText1(String text1) { this.text1 = text1; } public Bean(String text) { this.text = text; } }