Listview 设置不同类型的item

要想设置不同的item需要在adapter里面重写两个方法

getItemViewType() 需要注意这个个类型是0开始

getViewTypeCount();

 

复制代码
  1 package com.example.listview_01;
  2 
  3 import java.util.List;
  4 
  5 import android.content.Context;
  6 import android.view.LayoutInflater;
  7 import android.view.View;
  8 import android.view.ViewGroup;
  9 import android.widget.BaseAdapter;
 10 import android.widget.TextView;
 11 
 12 public class MyAdapter extends BaseAdapter {
 13 
 14     private Context context;
 15     private List<ViewItem> list;
 16     private LayoutInflater inflater;
 17 
 18     public MyAdapter(Context context, List<ViewItem> list) {
 19         this.context = context;
 20         this.list = list;
 21         inflater = LayoutInflater.from(context);
 22     }
 23 
 24     @Override
 25     public int getCount() {
 26         return list.size();
 27     }
 28 
 29     @Override
 30     public Object getItem(int position) {
 31         return list.get(position);
 32     }
 33 
 34     @Override
 35     public long getItemId(int position) {
 36         return position;
 37     }
 38 
 39     @Override
 40     public int getItemViewType(int position) {
 41         return list.get(position).getType();
 42     }
 43 
 44     @Override
 45     public int getViewTypeCount() {
 46         return 2;
 47     }
 48 
 49     @Override
 50     public View getView(int position, View convertView, ViewGroup parent) {
 51         HolderType1 holderType1 = null;
 52         HolderType2 holderType2 = null;
 53         int type = getItemViewType(position);
 54         if (convertView == null) {
 55             // 根据不同的type设置不同的布局
 56             switch (type) {
 57             case 0:
 58                 convertView = inflater.inflate(R.layout.activity_item, null);
 59                 holderType1 = new HolderType1(convertView);
 60                 convertView.setTag(holderType1);
 61                 break;
 62 
 63             case 1:
 64                 convertView = inflater.inflate(R.layout.activity_item2, null);
 65                 holderType2 = new HolderType2(convertView);
 66                 convertView.setTag(holderType2);
 67                 break;
 68             }
 69         } else {
 70             // 根据不同的布局设置不同的holder
 71             switch (type) {
 72             case 0:
 73                 holderType1 = (HolderType1) convertView.getTag();
 74                 break;
 75             case 1:
 76                 holderType2 = (HolderType2) convertView.getTag();
 77                 break;
 78             }
 79         }
 80 
 81         ViewItem item = list.get(position);
 82         // 根据不同的布局给控件填充数据
 83         switch (type) {
 84         case 0:
 85             holderType1.addressTxt.setText(item.getAddress());
 86             holderType1.nameTxt.setText(item.getName());
 87             holderType1.ageTxt.setText(item.getAge());
 88             break;
 89         case 1:
 90             holderType2.titleTxt.setText(item.getTitle());
 91             break;
 92         }
 93         return convertView;
 94     }
 95 
 96     private class HolderType1 {
 97         public TextView nameTxt;
 98         public TextView ageTxt;
 99         public TextView addressTxt;
100 
101         public HolderType1(View convertView) {
102             nameTxt = (TextView) convertView.findViewById(R.id.name);
103             ageTxt = (TextView) convertView.findViewById(R.id.age);
104             addressTxt = (TextView) convertView.findViewById(R.id.address);
105         }
106     }
107 
108     private class HolderType2 {
109         public TextView titleTxt;
110 
111         public HolderType2(View convertView) {
112             titleTxt = (TextView) convertView.findViewById(R.id.title);
113         }
114     }
115 
116 }
复制代码

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在WPF中,Listview可以使用GridView来设置表格线。 首先,我们需要添加一个ListView控件到我们的WPF窗口中。然后,我们可以在XAML中使用GridView来定义ListView的列和表格线。 下面是一个简单的示例代码: ```xaml <ListView> <ListView.View> <GridView> <GridViewColumn Header="列1"/> <GridViewColumn Header="列2"/> <GridViewColumn Header="列3"/> </GridView> </ListView.View> </ListView> ``` 在上面的代码中,我们使用ListView.View属性指定了ListView的视图类型,并设置为GridView。然后,我们在GridView中定义了三个GridViewColumn作为ListView的列。每个GridViewColumn都有一个Header属性,用于显示列的标题。 接下来,我们可以使用ListViewItemContainerStyle来设置表格线的样式。可以通过在XAML中添加一个Style来实现。以下是一个示例代码: ```xaml <ListView> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="BorderThickness" Value="0,1,0,0"/> <Setter Property="BorderBrush" Value="LightGray"/> </Style> </ListView.ItemContainerStyle> <ListView.View> <GridView> <GridViewColumn Header="列1"/> <GridViewColumn Header="列2"/> <GridViewColumn Header="列3"/> </GridView> </ListView.View> </ListView> ``` 在上面的代码中,我们使用ListViewItemContainerStyle属性来设置ListViewItem的样式。我们使用BorderThickness属性设置了每个ListViewItem的上边框,从而创建了表格线的效果。我们还使用BorderBrush属性设置了边框的颜色,让表格线看起来更明显。 通过以上方式,我们可以在WPF的ListView设置表格线来改善用户界面的可读性和美观性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值