==============第一种=============腹写adapter中的这两个方法
/**
*根据position来返回不同的条目类型
*返回的是你自己定义的这个条目所对应的类型
*/
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
--------------------------------------------------------
/**
* 返回集中类型的条目
*/
public int getViewTypeCount() {
2,通过 int type = getItemViewType(position); 获得当前条目所对应的类型type,
3,通过switch(type) 比对自己定义的条目所对应的常量,然后初始化不同的convertview
然后进行数据的填充 就OK啦·。。·。·------
----------------- 如果需要删除其中的条目,这个getViewTypeCount 的数值应该比实际数值最少大1吧 - ,否则删除最后一个条目的时候 会下标越界·。。·。·。·
其实上面这种方法有一些隐形的问题,比如 空指针问题,或者当你想更改其中某个条目的backgroundResource 然后你点击其他条目,让这个条目恢复到默认状态的时候,上面这种方法可能就会有些复杂 而且由于逻辑判断过多,可能会导致延迟
1,尽量能写在一个item中,
2,在getView中自己去根据position或者其他条件来判断 然后进行对应 gone visible
3,然后进行对应的操作;
这样做的好处: --------------------------------1,避免过多的判断 2,代码简单更容易控制,避免空指针,更适合一些逻辑处理(比如点击效果的实现)
推荐使用第二种·。。·。·比如聊天的对话列表
/**
*根据position来返回不同的条目类型
*返回的是你自己定义的这个条目所对应的类型
*/
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
--------------------------------------------------------
/**
* 返回集中类型的条目
*/
public int getViewTypeCount() {
}
2,通过 int type = getItemViewType(position); 获得当前条目所对应的类型type,
3,通过switch(type) 比对自己定义的条目所对应的常量,然后初始化不同的convertview
然后进行数据的填充 就OK啦·。。·。·------
----------------- 如果需要删除其中的条目,这个getViewTypeCount 的数值应该比实际数值最少大1吧 - ,否则删除最后一个条目的时候 会下标越界·。。·。·。·
其实上面这种方法有一些隐形的问题,比如 空指针问题,或者当你想更改其中某个条目的backgroundResource 然后你点击其他条目,让这个条目恢复到默认状态的时候,上面这种方法可能就会有些复杂 而且由于逻辑判断过多,可能会导致延迟
1,尽量能写在一个item中,
2,在getView中自己去根据position或者其他条件来判断 然后进行对应 gone visible
3,然后进行对应的操作;
这样做的好处: --------------------------------1,避免过多的判断 2,代码简单更容易控制,避免空指针,更适合一些逻辑处理(比如点击效果的实现)
推荐使用第二种·。。·。·比如聊天的对话列表