RSSフィードビューアがあり、特定のフィードを最後に聞いた時間をユーザーに表示したいと思いました。
これは、リストにロードされた最初のアイテム(現在のビューに表示されているアイテム)に対して機能しますが、ユーザーがリストビューを下にスクロールすると、表示されてlastViewedText
いる他のすべてのフィードが非表示になります。さらに、ユーザーが上にスクロールして戻ると(lastViewedText
以前は正常に表示されていました)、lastViewedText
が非表示になりました。BaseAdaptersgetView
メソッドは、可視性を設定する場所です。
カスタム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;
}
}
ビューが正しく更新されないのはなぜですか?タイトル、説明、日付はすべて正しく読み込まれます。