List中的问题包含一个静态和其他动态项

时间:2015-01-15 12:30:12

标签: android list dynamic android-adapter baseadapter

我的列表包含一个静态项和所有其他动态项。每个项目由图像和两个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);

}

1 个答案:

答案 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);
...
...