【问题标题】:ListView with TextView with background imageListView 与 TextView 与背景图像
【发布时间】:2010-11-12 11:44:27
【问题描述】:

我有一个包含很多“行”的 ListView。在每一行中,我都有一个带有背景图像的 TextView。当我滚动时,行的图像混合在一起......它们随着滚动跳到另一行。 在尝试过 android:scrollingCache="false" 和 android:cacheColorHint="#00000000" 但没有。

图像被动态加载。

我的部分布局:

<LinearLayout   android:id="@+id/QueryList"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:padding="3px"
                android:layout_below="@id/NavigationTab"
                android:layout_above="@id/Query"
                android:gravity="top">
        <ListView 
              android:id="@android:id/list"
              android:layout_width="fill_parent"
              android:scrollingCache="false"
              android:cacheColorHint="#00000000"
              android:layout_height="wrap_content">
        </ListView> 

以及我的部分代码:

    public View getView(int position, View convertView, ViewGroup parent) {

        ListContent holder;

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.expert_inflate_list, null);
            holder = new ListContent();
            holder.name = (TextView) convertView.findViewById(R.id.name);
            TextView iv = (TextView) convertView.findViewById(R.id.avatar);   
            holder.avatar = iv;
            holder.onLine =(TextView) convertView.findViewById(R.id.online);
            convertView.setTag(holder);

        } else {
            holder = (ListContent) convertView.getTag();
        }


        String rank = "";
        for (int i = 1; i <= ListviewContent.get(position).getRanking(); i++ ) { rank+=">"; };

        holder.name.setText( ListviewContent.get(position).getCompleteName() + " " + rank );

        if (  ListviewContent.get(position).getAvatar() != null && !ListviewContent.get(position).getAvatar().equals("null") ) {
            holder.avatar.setBackgroundDrawable( avatars.get( ListviewContent.get( position ).getUserId() ) );
        }

        if (  ListviewContent.get(position).getOnline() ) {
            holder.onLine.setBackgroundDrawable( resources.getDrawable( R.drawable.arrow_on ) );
        } else {
            holder.onLine.setBackgroundDrawable( resources.getDrawable( R.drawable.arrow_off ) );               
        }
        return convertView;
    }

"avatars" 是 Drawables 的缓存 有什么想法吗?

【问题讨论】:

    标签: android listview scroll


    【解决方案1】:

    尝试替换这个:

    if (  ListviewContent.get(position).getAvatar() != null && !ListviewContent.get(position).getAvatar().equals("null") ) {
            holder.avatar.setBackgroundDrawable( avatars.get( ListviewContent.get( position ).getUserId() ) );
        }
    

    用这个:

    holder.avatar.setBackgroundDrawable( avatars.get( ListviewContent.get( position ).getUserId() ) );
    

    这是你的意思吗?如果它有效,我可以进一步解释。不确定这是你想要的...

    【讨论】:

    • 感谢您的回复...我的英语很差,所以我的解释很糟糕。此行仅检查图像是否存在。不重要。活动开始的结果列表是:
    • [Avatar 1] Name 1 Icon 1 [Avatar 2] Name 2 Icon 2 [Avatar 3] Name 3 Icon 3 ... [Avatar N] Name N Icon N 当我滚动时:[Avatar 1 ] 名称 1 图标 1 [头像 2] 名称 2 图标 2 [头像 1] 名称 3 图标 1 ... [头像 N] 名称 N 图标 N 等... 图像和图标也混合在一起。我认为是背景和缓存的问题,但我已停用...再次感谢。
    • 已解决!!!你有理由。问题是缺少“else”子句。 “假”时会发生什么:没有图标...
    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2011-11-10
    相关资源
    最近更新 更多