在一个ListView中,显示的布局有多种不同形式,例如某些行只有ImageView,有些行只有TextView,怎样实现呢?
1个回答
展开全部
自定义一个Adapter继承自BaseAdapter。
在Adapter里面实现方法getItemType,
此方法是根据position来获取此列的类型,你传过来的list对象,可以在此判断需要显示什么类型,返回一个类型值(int)。
在getView里面,你可以调用getItemType方法,传入position,得到此列的显示类型。
然后根据不同的类型加载你需要的不同布局。
明白了吗?不明白就追问吧,实在理解不了我只好贴代码了。
在Adapter里面实现方法getItemType,
此方法是根据position来获取此列的类型,你传过来的list对象,可以在此判断需要显示什么类型,返回一个类型值(int)。
在getView里面,你可以调用getItemType方法,传入position,得到此列的显示类型。
然后根据不同的类型加载你需要的不同布局。
明白了吗?不明白就追问吧,实在理解不了我只好贴代码了。
追问
嗯 有实例最好哈。麻烦附上代码哈,谢谢。
追答
@Override public int getItemViewType(int position)
{
if (listAlarmContents.get(position).getAlarmDate() == null || listAlarmContents.get(position).getAlarmDate().equals(""))
{
return REPEAT_ALARM;
}
else
{
return ONCE_ALARM;
}
}
@Override public int getViewTypeCount()
{
return 2;
}
// 闹钟类型 switch (type)
{
// 一次性闹钟
case ONCE_ALARM:
//加载一次性闹钟布局
break;
// 重复闹钟 case REPEAT_ALARM:
//加载重复闹钟布局
break;
default:
break;
}
只能贴这么多了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询