列表中的问题与一个静态和其他动态项目
Issues in List with one static and other dynamic items
我的列表由一个静态项目和所有其他动态项目组成 item.Each 项目由图像和两个 textviews.The 静态项目添加为 list.I 的最后一项,我面临以下问题。
1.I 已将所有动态列表项的默认图像设置为相同和静态列表项的默认图像 different.But 静态列表项显示的图像与动态列表项的图像相同。
内部适配器我使用了以下代码-
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
是不可见的,因为 expected.But 最后一个静态项的图像视图显示图像 "R.drawable.emptyalbum"
而它应该显示图像“R.drawable.create_album"
和图像 "R.drawable.create_album"
有时会出现在动态的第三项中,而我的光照由 15 项组成,它应该出现在第 15 项(最后一项)中。
2.The 来自 textview 正在显示的服务器的值是动态列表项的下一项,除了显示正确的第一项 value.i.e.textview 项 2 显示应该显示的值按项目 3,项目 3 显示应按项目 4 显示的值,依此类推。
同样在第一个列表项中显示从服务器获取的图像,而其余列表项不显示。
这就是我添加静态项的方式
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);
适配器class
public class InvitesListingAdapter extends BaseAdapter {
private List < Invites > mAlbumList;
private Context mContext;
public InvitesListingAdapter(Context context, List < Invites > albums) {
mContext = context;
mAlbumList = albums;
}
@Override
public int getCount() {
Log.e("count", "c" + mAlbumList.size());
return mAlbumList.size();
}
@Override
public Object getItem(int i) {
return mAlbumList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View convertView, ViewGroup viewGroup) {
if (convertView == null) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
convertView = layoutInflater.inflate(R.layout.item_album_listing, null);
}
NetworkImageView albumImage = (NetworkImageView) convertView.findViewById(R.id.album_thumbnail);
TextView albumName = (TextView) convertView.findViewById(R.id.album_name);
TextView albumPhotosCount = (TextView) convertView.findViewById(R.id.album_photos_number);
if (i == getCount() - 1) {
albumPhotosCount.setVisibility(View.INVISIBLE);
albumName.setText("Create Album");
LoadImage.loadImage("xyz", albumImage, R.drawable.create_album);
} else {
albumPhotosCount.setVisibility(View.VISIBLE);
Uri uri;
if (mAlbumList.get(i).getnPics() != 0) {
uri = Uri.parse(mAlbumList.get(i).getCoverPhotoUrl());
if (uri.getHost() == null) {
byte[] decodedImage = Base64.decode(uri.toString(), Base64.URL_SAFE);
albumImage.setImageBitmap(BitmapFactory.decodeByteArray(decodedImage,
0, decodedImage.length));
} else {
Toast.makeText(mContext, uri.toString(), Toast.LENGTH_LONG).show();
LoadImage.loadImage(uri.toString(), albumImage, R.drawable.emptyalbum);
}
} else {
LoadImage.loadImage("xyz", albumImage, R.drawable.emptyalbum);
}
albumName.setVisibility(View.VISIBLE);
albumName.setText(mAlbumList.get(i).getName());
albumPhotosCount.setText(mAlbumList.get(i).getnPics() + " Photos");
}
return convertView;
}
}
在您的适配器中创建一个私有 class。此 class 应包含您的列表项具有的所有视图。
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);
...
...
我的列表由一个静态项目和所有其他动态项目组成 item.Each 项目由图像和两个 textviews.The 静态项目添加为 list.I 的最后一项,我面临以下问题。
1.I 已将所有动态列表项的默认图像设置为相同和静态列表项的默认图像 different.But 静态列表项显示的图像与动态列表项的图像相同。 内部适配器我使用了以下代码-
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
是不可见的,因为 expected.But 最后一个静态项的图像视图显示图像 "R.drawable.emptyalbum"
而它应该显示图像“R.drawable.create_album"
和图像 "R.drawable.create_album"
有时会出现在动态的第三项中,而我的光照由 15 项组成,它应该出现在第 15 项(最后一项)中。
2.The 来自 textview 正在显示的服务器的值是动态列表项的下一项,除了显示正确的第一项 value.i.e.textview 项 2 显示应该显示的值按项目 3,项目 3 显示应按项目 4 显示的值,依此类推。
同样在第一个列表项中显示从服务器获取的图像,而其余列表项不显示。
这就是我添加静态项的方式
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);
适配器class
public class InvitesListingAdapter extends BaseAdapter {
private List < Invites > mAlbumList;
private Context mContext;
public InvitesListingAdapter(Context context, List < Invites > albums) {
mContext = context;
mAlbumList = albums;
}
@Override
public int getCount() {
Log.e("count", "c" + mAlbumList.size());
return mAlbumList.size();
}
@Override
public Object getItem(int i) {
return mAlbumList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View convertView, ViewGroup viewGroup) {
if (convertView == null) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
convertView = layoutInflater.inflate(R.layout.item_album_listing, null);
}
NetworkImageView albumImage = (NetworkImageView) convertView.findViewById(R.id.album_thumbnail);
TextView albumName = (TextView) convertView.findViewById(R.id.album_name);
TextView albumPhotosCount = (TextView) convertView.findViewById(R.id.album_photos_number);
if (i == getCount() - 1) {
albumPhotosCount.setVisibility(View.INVISIBLE);
albumName.setText("Create Album");
LoadImage.loadImage("xyz", albumImage, R.drawable.create_album);
} else {
albumPhotosCount.setVisibility(View.VISIBLE);
Uri uri;
if (mAlbumList.get(i).getnPics() != 0) {
uri = Uri.parse(mAlbumList.get(i).getCoverPhotoUrl());
if (uri.getHost() == null) {
byte[] decodedImage = Base64.decode(uri.toString(), Base64.URL_SAFE);
albumImage.setImageBitmap(BitmapFactory.decodeByteArray(decodedImage,
0, decodedImage.length));
} else {
Toast.makeText(mContext, uri.toString(), Toast.LENGTH_LONG).show();
LoadImage.loadImage(uri.toString(), albumImage, R.drawable.emptyalbum);
}
} else {
LoadImage.loadImage("xyz", albumImage, R.drawable.emptyalbum);
}
albumName.setVisibility(View.VISIBLE);
albumName.setText(mAlbumList.get(i).getName());
albumPhotosCount.setText(mAlbumList.get(i).getnPics() + " Photos");
}
return convertView;
}
}
在您的适配器中创建一个私有 class。此 class 应包含您的列表项具有的所有视图。
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);
...
...