【发布时间】:2017-02-21 09:09:58
【问题描述】:
我正在尝试制作一个 ListView,其中第一个项目显示在不同的布局中,其他项目显示在一个共同的布局中。两种布局都具有相同的元素,它们成对具有相同的名称。当我这样做时:
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
if(position == 0){
convertView = inflater.inflate(R.layout.article_list_top_item, parent, false);
Log.d("ALA", "pos = " + position + ", inflated top");
}
else {
convertView = inflater.inflate(R.layout.article_list_item, parent, false);
Log.d("ALA", "pos = " + position + ", inflated normal");
}
}
// setText, setBitmap etc here
return convertView;
}
它没有工作。
从日志中我可以说,inflater.inflate 被触发了 6 次,inflated top 被触发了 1 次,inflated normal 被触发了 5 次。
显示的是,article[0] 位于布局 article_list_top_item 中,而 article[1] ~ article[5] 位于 article_list_item 中。
一直到这里都没问题,但是模式重复了,这意味着文章[6]、文章[12]、[18]、...都在布局article_list_top_item 中,这不是我想要的。
我该怎么做才能让第一篇文章出现在 article_list_top_item??
附:我尝试重命名 article_list_top_item.xml 中的元素并 if-branched setText setImage 进程,但没有帮助。
我尝试在//setText 行之前添加else return convertView;,结果变得一团糟。
我想只为第一个项目制作一个专用布局元素,但这不是我想要的,因为整个列表位于 SwipeRefreshLayout 下
请帮忙。
【问题讨论】:
-
感谢@Blackbelt,这解决了问题。并不是说我在发帖之前没有搜索过,而是我被所有关于 ViewHolders 的帖子分心了