私は異なる状態のアイテムを含むListView
を持っています。これらの状態の項目の一つでパディングとカスタムの背景とTextView
があります。他のすべての州についてはリストビューアイテムをパディングと再利用
<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid
android:color="@color/..." />
<padding
android:left="8dp"
android:right="8dp" />
<corners
android:radius="10dp" />
</shape>
背景がnull
です。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View result = convertView != null
? convertView
: getLayoutInflater().inflate(R.layout.item, parent, false);
final View statusView = result.findViewById(R.id.status);
if (position % 4 == 0) {
statusView.setBackgroundResource(R.drawable.target);
} else {
statusView.setBackground(null);
}
return result;
}
このリストをスクロールすると、バックグラウンドのない項目には再利用後にパディングがあります。
私はそれを修正するために見つける唯一の解決策は、アダプタにパディングと背景をリセットすることです:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View result = convertView != null
? convertView
: getLayoutInflater().inflate(R.layout.item, parent, false);
final View statusView = result.findViewById(R.id.status);
statusView.setPadding(0, 0, 0, 0);
if (position % 4 == 0) {
statusView.setBackground(null);
statusView.setBackgroundResource(R.drawable.target);
} else {
statusView.setBackground(null);
}
return result;
}
が、それはハックのように見えます。
誰も同じ問題に直面しましたか?または、ハックなしで修正する方法を知っているかもしれませんか?