ListView与TextView与背景图像

时间:2010-11-12 11:44:27

标签: android listview scroll

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

图像以dinamically方式加载。

我的部分布局:

<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的缓存 任何想法?

1 个答案:

答案 0 :(得分:0)

尝试替换它:

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() ) );
这是你的意思吗?如果它有效,我可以进一步解释。不确定那是你想要的......