我有一个RSS Feed查看器,想要向用户显示他们上次收听特定Feed的时间。
这适用于列表中加载的第一个项目(当前视图中可见的项目),但是当用户向下滚动列表视图时,隐藏了每个其他查看的Feed的lastViewedText
。此外,当用户向上滚动到顶部(之前成功显示lastViewedText
的位置)时,lastViewedText
现在已隐藏。 BaseAdapters getView
方法是我设置可见性的地方。
自定义BaseAdapter:
public class PodcastAdapter extends BaseAdapter{
private ArrayList<Podcast> feed;
private LayoutInflater inflater = null;
public PodcastAdapter(Activity a, ArrayList<Podcast> feed){
this.feed = feed;
inflater = (LayoutInflater)a.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return feed.size();
}
public Object getItem(int position) {
return feed.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if(convertView == null)
vi = inflater.inflate(R.layout.rss_listview_item, null);
TextView title = (TextView)vi.findViewById(R.id.title);
TextView desc = (TextView)vi.findViewById(R.id.description);
TextView date = (TextView)vi.findViewById(R.id.date);
TextView lastViewedText = (TextView)vi.findViewById(R.id.lastViewedText);
Podcast feedIndex = feed.get(position);
title.setText(feedIndex.Title);
desc.setText(feedIndex.Description);
date.setText(feedIndex.Date);
lastViewedText.setText(feedIndex.LastViewedText);
if(feedIndex.LastViewedText.equals("")){
lastViewedText.setVisibility(View.GONE);
}
return vi;
}
}
为什么视图无法正确更新?标题,desc,日期都正确加载!
答案 0 :(得分:2)
if(feedIndex.LastViewedText.equals("")){
lastViewedText.setVisibility(View.GONE);
} else {
lastViewedText.setVisibility(View.VISIBLE);
}
视图隐藏在转换视图中,你不要取消隐藏它:)
此外,您可以使用TextUtils.isEmpty(CharSequence string)来检查String是空还是空。
答案 1 :(得分:1)
改为:
if(feedIndex.LastViewedText.equals("")){
lastViewedText.setVisibility(View.GONE);
}else{
lastViewedText.setVisibility(View.VISIBLE);
}