我有一个ListView显示有图像的新闻,并设置何时(位置== 0)更改布局,然后设置正常listview_row以获取以下新闻,但这仅适用于屏幕上显示的3个项目,然后是位置回到0并再次更改视图,这里有任何帮助吗?
这是我的lazyAdapter代码,
vi = convertView;
Log.d("NOTICIAS", "P0sition: " + position);
// set Layout for 1rst item
if (convertView==null && position == 0) {
vi = inflater.inflate(R.layout.noticias_list_item_first, null);
}
// set layout for the next items
else if(convertView==null && position != 0){
vi = inflater.inflate(R.layout.noticias_list_item, null);
}
TextView news_id = (TextView)vi.findViewById(R.id.news_id); // news_id
TextView news_titulo = (TextView)vi.findViewById(R.id.news_titulo); // news_titulo
TextView news_desc = (TextView)vi.findViewById(R.id.news_desc); // news_desc
//TextView news_fecha = (TextView)vi.findViewById(R.id.news_fecha); // news_fecha
ImageView news_img = (ImageView)vi.findViewById(R.id.news_img); // news_img
HashMap<String, String> news = new HashMap<String, String>();
news = data.get(position);
// Setting all values in listview
news_id.setText(news.get(NoticiasActivity.TAG_NEWS_ID));
news_titulo.setText(news.get(NoticiasActivity.TAG_NEWS_TITULO));
news_desc.setText(news.get(NoticiasActivity.TAG_NEWS_DESC));
//news_fecha.setText(song.get(NoticiasActivity.TAG_NEWS_FECHA));
imageLoader.DisplayImage(news.get(NoticiasActivity.TAG_NEWS_IMG), news_img);
return vi;
答案 0 :(得分:1)
ListView
为了性能目的而回收列表项,因此在您的情况下,它会尝试使用0,3,6 ...索引的相同视图。
您需要Override
getViewTypeCount
并返回 2 ,因为您有两种不同的布局。
@Override
public int getViewTypeCount() {
return 2; // return the view type
}
另外,Override
getItemViewType
并为position 0
返回一个唯一的类型,并为此类其他位置返回相同的类型。
@Override
public int getItemViewType(int position){
// return a unique number
if(position==0){
return 0;
}
else {
return 1;
}
}