私はカスタムリストビューを実装しようとしています。私は項目を選択するが、私はif()
条件を追加する場合、ビューが正しく表示されているが、2つの項目(非とき、私は、1つのアイテムを選択しますif()
条件なしでgetView()
方法リストビューで2つのアイテムが選択されました。
内if()
ステートメントを使用するまで、すべてが正常に動作します隣接する)が選択されます(1番目と最後の1番目と2番目の最後のいずれかの組み合わせ)。
View getView(...){
....
if (!item.getPriceTo().equals(""))
priceToTV.setText(item.getPriceTo());
else
priceToTV.setText(item.getPriceFrom());
return view;
}
また、私は、現在の選択がred_borderを持っており、それが選択されている場合black_borderが、それに設定されているので、選択を表示する前のビューを保存使用しています。:
subItemsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("New Order", "........");
if (previousViewOfSubItems != null && previousViewOfSubItems != view) {
previousViewOfSubItems.setBackgroundResource(R.drawable.black_border);
if (quantity.getText().toString().equals("xx") || quantity.getText().toString().equals("0")) {
viewForVisibility.setVisibility(View.GONE);
layoutForQuantity.setVisibility(View.GONE);
}
}
if (previousViewOfSubItems == view)
return;
previousViewOfSubItems = view;
previousViewOfSubItems.setBackgroundResource(R.drawable.red_border);
viewForVisibility = previousViewOfSubItems.findViewById(R.id.viewForVisibility);
viewForVisibility.setVisibility(View.VISIBLE);
layoutForQuantity = (LinearLayout) previousViewOfSubItems.findViewById(R.id.layoutForQuantity);
layoutForQuantity.setVisibility(View.VISIBLE);
quantity = (TextView) previousViewOfSubItems.findViewById(R.id.subTypeQuantity);
}
});
そのそれはリストビューのアイテムを表示するビューを再利用beacause最初のビューがスクロールアウトされると、同図は、底部のビューを表示するために再利用されますリストビュー。ビューを比較する代わりに、クリックしたビューの位置を比較してみてください。 –