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

该视图隐藏在转换视图中,您不要取消隐藏它:)

此外,您可以使用TextUtils.isEmpty(CharSequence string)来检查 String 是否为空或 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 回答