我的列表包含一个静态项和所有其他动态项。每个项目由图像和两个textview组成。静态项目被添加为列表的最后一项。我正面临以下问题。
1.我已将所有动态列表项的默认图像设置为相同,静态列表项的默认图像不同。但静态列表项显示的图像与动态列表项的图像相同。 内部适配器我使用了以下代码 -
if (i == getCount()-1)
{
albumPhotosCount.setVisibility(View.INVISIBLE);
albumName.setText("Create Album");
LoadImage.loadImage("xyz", albumImage, R.drawable.create_album);
}
else{
LoadImage.loadImage(uri.toString(), albumImage, R.drawable.emptyalbum);
..}
然而,albumname
显示最后一项的正确文字,albumPhotosCount
按预期显示不可见。但上一个静态项目的图片浏览显示图片"R.drawable.emptyalbum"
,而它应显示图片“{{1图像R.drawable.create_album"
有时出现在第三个项目中,它是动态的,而我的点亮包含15个项目,它应该出现在第15个项目(最后一个项目)。
2.来自textview正在推迟的服务器的值是动态列表项的下一项,除了显示正确值的第一项。项2的文本视图显示应该由项3和项显示的值3显示应按项目4显示的值,依此类推 此外,在第一个列表项目中显示从服务器获取的图像,而不显示其余列表项目。
这就是我添加静态项
的方法"R.drawable.create_album"
适配器类
Invites createalbum;
createalbum=new Invites();
ArrayList<Invites> albumObjects;
private InvitesListingAdapter invitesListingAdapter;
albumObjects = (ArrayList<Invites>) response;
albumObjects.add(createalbum);
invitesListingAdapter = new InvitesListingAdapter(getActivity(), albumObjects);
mAlbumListingView.setAdapter(invitesListingAdapter);
}
答案 0 :(得分:1)
在适配器中创建一个私有类。此类应包含列表项所具有的所有视图。
private static class ViewHolder {
NetworkImageView albumImage;
TextView albumName;
TextView albumPhotosCount;
}
然后在getView()里面:
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
convertView = layoutInflater.inflate(R.layout.item_album_listing, null);
viewHolder.albumImage = (NetworkImageView) convertView.findViewById(R.id.album_thumbnail);
viewHolder.albumName = (TextView) convertView.findViewById(R.id.album_name);
viewHolder.albumPhotosCount = (TextView) convertView.findViewById(R.id.album_photos_number);
convertView.setTag(viewHolder);
} else {
//This means that the view has already been inflated once
//so you do not need to inflate it again, just use
//the references from the last time.
viewHolder = convertView.getTag();
}
//Now this is where you want to work on your views.
viewHolder.albumPhotosCount.setVisibility(View.VISIBLE);
...
...