gpt4 book ai didi

android - getView 在自定义适配器中显示错误图像?

转载 作者:搜寻专家 更新时间:2023-11-01 09:06:09 24 4
gpt4 key购买 nike

我有一个包含自定义适配器和自定义行的列表。

问题是当我滚动 ListView 时,图像位于错误的位置...

这是自定义行 xml:

<LinearLayout
android:id="@+id/imagequality_listview_row_linearlayout"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:weightSum="1"
android:orientation="horizontal" xmlns:android="http://schemas.android.com/apk/res/android">


<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imagequality_listview_row_textview"
android:layout_width="0dp"
android:layout_height="40dip"
android:gravity="right"
android:paddingLeft="5dip"
android:drawableLeft="?android:attr/listChoiceIndicatorMultiple"
android:layout_weight="0.6"
/>

<com.example.listviewtest.LoaderImageView
android:id="@+id/imagequality_listview_row_loaderImageView"
android:layout_width="0dp"
android:layout_weight="0.4"
android:layout_height="100dp"
image="http://developer.android.com/images/dialog_buttons.png"
/>

</LinearLayout>

这是 GetView:

List<ImageQuality_Item> items;
Context context;
List<CheckedTextView> checkedList;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = View.inflate(context, R.layout.imagequality_listview_row, null);
holder = new ViewHolder();
holder.layout = (LinearLayout) convertView.findViewById(R.id.imagequality_listview_row_linearlayout);

holder.textview = (CheckedTextView) convertView.findViewById(R.id.imagequality_listview_row_textview);
holder.image = (LoaderImageView) convertView.findViewById(R.id.imagequality_listview_row_loaderImageView);
checkedList.add(holder.textview);
holder.layout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < checkedList.size(); i++)
if (checkedList.get(i).isChecked())
checkedList.get(i).setChecked(false);
((CheckedTextView) ((LinearLayout) v).getChildAt(0)).setChecked(true);
}
});

holder.textview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < checkedList.size(); i++)
if (checkedList.get(i).isChecked())
checkedList.get(i).setChecked(false);
((CheckedTextView) v).setChecked(true);
}
});
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();

holder.textview.setText(items.get(position).getDescription());
if (holder.image.used == false) {
holder.image.setImageDrawable(items.get(position).getURL());
holder.image.used = true;
}

return convertView;
}

class ViewHolder {
LinearLayout layout;
LoaderImageView image;
CheckedTextView textview;
}

我该如何解决这个问题?

最佳答案

每次调用 getView() 时,您都必须设置 Drawable,因为 android 正在重用列表元素。如果您不更新它,可能会出现较早的设置图像。

只需删除设置图像可绘制的条件,它就会起作用。

关于android - getView 在自定义适配器中显示错误图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11780816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com