0

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;
    }
}

ビューが正しく更新されないのはなぜですか?タイトル、説明、日付はすべて正しく読み込まれます。

4

2 に答える 2

2
   if(feedIndex.LastViewedText.equals("")){
            lastViewedText.setVisibility(View.GONE);
        } else {
            lastViewedText.setVisibility(View.VISIBLE);
    }

ビューは変換ビューで非表示になり、再表示しないでください:)

Also, you can use TextUtils.isEmpty(CharSequence string), to check if a String is empty or null.

于 2013-02-01T16:55:06.143 に答える
1

代わりにそれを行います:

    if(feedIndex.LastViewedText.equals("")){
        lastViewedText.setVisibility(View.GONE);
    }else{
        lastViewedText.setVisibility(View.VISIBLE);
    }                  
于 2013-02-01T16:54:53.220 に答える