我调用一个Web服务,并将JSON响应解析为一个名为ConventionalList的对象

某些返回的场所是“精选”的,这意味着在列表视图中,它们具有与未精选场所不同的背景。

获取数据后,我将遍历数据,将特色项目放在顶部,然后添加非特色场所。

一旦数据按照我想要的方式排序,我将使用自定义ArrayAdapter,如下所示:

ArrayAdapter<Listing> customerAdapter = 
    new ArrayAdapter<Listing>(ViewHappyHoursListingsActivity.this, 
    R.layout.list_item, R.id.name, venueListsWithFeaturedAtBeginning) {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);

        TextView listingID = (TextView)view.findViewById(R.id.listingID);
        TextView name = (TextView)view.findViewById(R.id.name);
        TextView location = (TextView)view.findViewById(R.id.location);
        TextView runningTime = (TextView)view.findViewById(R.id.runningtime);
        TextView distance = (TextView)view.findViewById(R.id.distance);

        // Change UI if this listing is a featured one
        if(getItem(position).featured)
        {
            name.setText(getItem(position).venueName);
            Log.d("Setting textview to black in position:", String.valueOf(position));
            name.setBackgroundResource(R.color.black);
        }
        else
        {
            name.setText(getItem(position).venueName);
        }

        listingID.setText("" + getItem(position).listingID);
        location.setText(getItem(position).venueLocation);
        runningTime.setText(getItem(position).runningTime);
        distance.setText(getItem(position).distanceForUI);

        return view;
    }
};
setListAdapter(customerAdapter);

根据场地列表中的数据,FeaturedAtBeginning仅前两个项目应具有黑色背景。 列表视图中有8个项目,第一个和第二个具有预期的黑色背景,但是第六个和第七个也是如此

输出如下:

ListItem1: Black background
ListItem2: Black background
ListItem3: White background
ListItem4: White background
ListItem5: White background
ListItem6: Black background
ListItem7: Black background
ListItem8: White background

Log.d()行输出

D /将名称textview设置为黑色位置:﹕ 0 D /将名称textview设置为黑色位置:﹕ 1

没别的。

有谁知道为什么这种现象发生?

#1楼 票数:0 已采纳

视图将被回收(即项目6和7与1和2重复使用相同的convertView ),因此您需要从不需要背景的视图中删除背景。

name.setBackgroundResource(0);

到您的else分支。

  ask by andrewb translate from so

未解决问题?本站智能推荐:

3回复

getView中到底发生了什么

我在getView的适配器扩展覆盖中看到了很多: 我从语义上了解发生了什么事-“如果convertView为null,然后对其进行膨胀”,但是我真的不明白为什么-在什么情况下convertView为null,在什么情况下它已经是View? 另外(我知道“每个帖子有1个问题”), 但是与上
2回复

在Android中跳过getView

我目前在Android中有一个自定义列表视图,我通过覆盖ArrayAdapter的getView方法生成。 它完美地运作。 但是,在某些情况下,我需要“跳过”列表中的项目。 我尝试返回null,但这只是一个nullpointer错误。 所以我的问题是,我可以在getView中返回什么,以
2回复

Getview在android中多次调用

我正在努力重用单元格,目前我正在使用适配器的getview方法,我遇到一个问题,我的getview方法调用了9次,但它应该只在应用程序启动时调用5次因为我只显示5行。 请帮帮我们谢谢.........
1回复

奇怪的问题:GalleryWidget从不调用getView

我正在为示例应用程序开发媒体播放器...并且进展非常顺利...只是当我将AlbumAdapter添加到Gallery Widget时...它从未调用过getView。 这样不是吗 适配器中有13个项目...我检查了。 从来没有调用过getView ...我那里有一个从未调用过的Log项
1回复

Android-自定义ArrayAdapter中的getView()问题

我正在开发一个RSS阅读器,但在用网站上的图像和文本视图填充列表视图时遇到问题。 我正在使用Android Studio,并且没有填充listview,也找不到问题,我确定在编译时不会抛出错误。 要将图像上载到远程,请使用Volley库中附加到该图像的NetworkImageView。 在
2回复

为什么不更改getView()Android中的位置?

在arraylist中添加新数据后,位置不会更改。 公共类ItemsAdapter扩展BaseAdapter { } 我还在主要活动中调用notifyDataSetChanged()方法。 使用对话框添加数据。 我正在使用自定义对话框并在运行时添加数据,但不更改数据。
2回复

android中的getView方法[重复]

这个问题已经在这里有了答案: 创建自己的自定义适配器时,getView()方法如何工作? 8个答案 我看了一些视频,但我不明白为什么我们要在android的自定义采用器中使用getView方法。 任何人都可以解释一下getView方法在数组采用器中的作用。 提前致谢。
3回复

getView(...)中的ListView位置问题

我在ListView中有三个项目,在每个列表项目中,我都有三个TextView,一个包含项目价格,第二个显示项目数量,第三个显示项目总数。 另外还有两个TextView,一个用于增加数量,第二个用于减少数量。 现在的问题是,每当我更改第一个或第二个列表项的数量时,它都会影响第三个列表项的