看代码
1:布局文件
主界面只有一个listview
<ListView
android:id="@+id/listview_1"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
两个条目的引用布局 都是一个图片,一个textview,只是方向不同
item1
<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/text_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:background="@mipmap/ic_launcher"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
item2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher" />
<TextView
android:id="@+id/text_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
2:主界面
public class MainActivity extends AppCompatActivity {
private ListView lv;
private List<String> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listview_1);
for (int i=0;i<20;i++){
list.add("哈哈"+i);
}
//设置适配器
MyListViewAdapter adapter = new MyListViewAdapter(MainActivity.this,list);
lv.setAdapter(adapter);
}
}
3:适配器
public class MyListViewAdapter extends BaseAdapter {
Context context;
List<String> list;
public static final int TYPE1=0;
public static final int TYPE2=1;
public MyListViewAdapter(Context context, List<String> list) {
this.context=context;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
//重写方法,返回有几种条目类型
@Override
public int getViewTypeCount() {
return 2;
}
//重写方法,返回具体条目
@Override
public int getItemViewType(int position) {
if (position % 2 == 0){
return TYPE1;
}else{
return TYPE2;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//得到当前条目。如果是0就适配item1 如果是1就适配item2
int type = getItemViewType(position);
switch (type){
case TYPE1:
ViewHolder1 viewHolder1;
if (convertView==null){
viewHolder1=new ViewHolder1();
convertView=View.inflate(context, R.layout.item_1,null);
viewHolder1.textView1= (TextView) convertView.findViewById(R.id.text_1);
convertView.setTag(viewHolder1);
}else{
viewHolder1 = (ViewHolder1) convertView.getTag();
}
viewHolder1.textView1.setText(list.get(position));
break;
case TYPE2:
ViewHolder2 viewHolder2;
if (convertView==null){
viewHolder2=new ViewHolder2();
convertView=View.inflate(context, R.layout.item_2,null);
viewHolder2.textView2= (TextView) convertView.findViewById(R.id.text_2);
convertView.setTag(viewHolder2);
}else{
viewHolder2 = (ViewHolder2) convertView.getTag();
}
viewHolder2.textView2.setText(list.get(position));
break;
}
return convertView;
}
class ViewHolder1{
TextView textView1;
}
class ViewHolder2{
TextView textView2;
}
}
本文介绍了一个简单的 Android 应用示例,展示了如何在 ListView 中使用多种类型的条目布局,并通过自定义适配器实现不同条目的交替显示。文章提供了完整的代码示例,包括主界面布局、主Activity代码及自定义适配器。
423

被折叠的 条评论
为什么被折叠?



