1
我使用自定義ListView編寫代碼。在ListView中,我有一個隱藏在某些情況下的textView。當我向下滾動視圖時,一切正常。但是,當我滾動查看所有textVie隱藏。我知道這與設置元素標籤有關。我試圖從不同的側面的例子,但是,TextView的公司總是消失:( 我的自定義代碼ArrayAdapter:滾動列表視圖時的數據解釋不正確
class WallpapersListAdapter extends ArrayAdapter<Wallpaper> {
private List<Wallpaper> wallpapersContainer;
private ImageLoader imageLoader;
private DisplayImageOptions imageLoaderOptions;
public WallpapersListAdapter(Context context, List<Wallpaper> wallpapersContainer) {
super(context, R.layout.wallpaper_view, wallpapersContainer);
this.wallpapersContainer = wallpapersContainer;
setImageLoaderOptions();
}
private void setImageLoaderOptions() {
imageLoaderOptions = new DisplayImageOptions.Builder()
//.showImageOnLoading(R.drawable.place_holder)
//.showImageForEmptyUri(R.drawable.question)
//.showImageOnFail(R.drawable.big_problem)
.imageScaleType(ImageScaleType.EXACTLY)
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
imageLoader = ImageLoader.getInstance();
}
@Override
public int getCount() {
return wallpapersContainer.size();
}
@Override
public Wallpaper getItem(int position) {
Wallpaper wallpaper = wallpapersContainer.get(position);
return wallpaper;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
WallpaperViewHolder currentWallpaperViewHolder;
// do we have a view
if (convertView == null) {
// we don't have a view so create one by inflating the layout
itemView = LayoutInflater.from(getContext()).inflate(R.layout.wallpaper_view, parent, false);
itemView.getLayoutParams().height = parent.findViewById(R.id.wallpapers_list_view).getMeasuredHeight();
currentWallpaperViewHolder = getWallpaperViewHolder(itemView);
// set the tag for this view to the current person view holder
itemView.setTag(currentWallpaperViewHolder);
itemView.setTag(R.id.wallpaper_author, currentWallpaperViewHolder.wallpaperAuthor);
itemView.setTag(R.id.wallpaper_site, currentWallpaperViewHolder.wallpaperSite);
} else {
// we have a view so get the tagged view
currentWallpaperViewHolder = (WallpaperViewHolder) itemView.getTag();
}
currentWallpaperViewHolder.wallpaperAuthor.setTag(position);
currentWallpaperViewHolder.wallpaperSite.setTag(position);
setWallpaperViewContent(wallpapersContainer.get(position), currentWallpaperViewHolder);
return itemView;
}
private void setWallpaperViewContent(Wallpaper wallpaper, WallpaperViewHolder wallpaperViewHolder) {
String authorName = wallpaper.getAuthorName();
String authorSite = wallpaper.getAuthorSite();
if (authorName == null) {
wallpaperViewHolder.wallpaperAuthor.setVisibility(View.GONE);
} else {
wallpaperViewHolder.wallpaperAuthor.setText(getContext().getString(R.string.wallpaper_author_name) + " " + authorName);
}
if (authorSite == null) {
wallpaperViewHolder.wallpaperSite.setVisibility(View.GONE);
} else {
wallpaperViewHolder.wallpaperSite.setText(getContext().getString(R.string.wallpaper_author_site) + " " + authorSite);
}
wallpaperViewHolder.wallpaperDateForUse.setText(wallpaper.getDateForUse());
imageLoader.displayImage(
wallpaper.getHDUrl()//the drawable
, wallpaperViewHolder.imageViewWallpaper//the image view
, imageLoaderOptions);//the display options
}
private WallpaperViewHolder getWallpaperViewHolder(View itemView) {
WallpaperViewHolder wallpaperViewHolder = new WallpaperViewHolder();
wallpaperViewHolder.wallpaperDateForUse
= (TextView) itemView.findViewById(R.id.wallpaper_date_for_use);
wallpaperViewHolder.imageViewWallpaper
= (ImageView) itemView.findViewById(R.id.wallpaper_image);
wallpaperViewHolder.wallpaperAuthor
= (TextView) itemView.findViewById(R.id.wallpaper_author);
wallpaperViewHolder.wallpaperSite
= (TextView) itemView.findViewById(R.id.wallpaper_site);
wallpaperViewHolder.setWallpaperBtn
= (Button) itemView.findViewById(R.id.wallpaper_set);
return wallpaperViewHolder;
}
private static class WallpaperViewHolder {
ImageView imageViewWallpaper;
TextView wallpaperDateForUse;
TextView wallpaperAuthor;
TextView wallpaperSite;
Button setWallpaperBtn;
}
}
初學者錯誤,我不知道該項目的可見性必須重新設置:) –