ListView の順序を手動で並べ替えたい。私が(したい)これを達成する方法は、移動するアイテムをタップし、そのアイテムの背景を別の色に設定し、その位置(oldPosition)を保存してから、下に表示されるアイテムをタップし、最後に元のアイテムの場所の背景をリセットします。
これを行うために使用するコードは次のとおりです。
List<String> catarray; // string array declared in main activity
ArrayAdapter<String> catadapter; // adapter for Spinner declared in main activity
ListView cats; // listview declared in list activity
ArrayAdapter<String> adapter; // adapter for listview declared in list activity
int oldPosition = -1;
cats.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (oldPosition < 0) {
oldPosition = position;
try {
dr = parent.getChildAt(position).getBackground();
parent.getChildAt(position).setBackgroundColor(Color.argb(255, 0, 153, 204));
}
catch (Exception e) {
}
}
else {
String item = PhotoActivity.catarray.remove(oldPosition);
PhotoActivity.catarray.add(position,item);
try {
parent.getChildAt(oldPosition).setBackground(dr);
}
catch (Exception e) {
}
oldPosition = -1;
changed = true;
PhotoActivity.catadapter.notifyDataSetChanged();
adapter.notifyDataSetChanged();
}
}
});
私が抱えている問題は、リストが表示されたビューよりも大きい場合、タップしたアイテムの両方が背景を変更しますが、表示範囲の下にある追加のアイテムも変更されることです。
したがって、たとえば、完全なリストが 12 項目で、そのうち最初の 8 項目が表示されている場合、2 番目の項目をタップすると、その項目と項目 11 の両方が表示されます (つまり、2 番目の項目と表示されている項目の下の 1 つ)範囲) が強調表示されます。
なぜこれが起こるのですか?
どうすればそれを停止できますか、それができない場合は、誤って強調表示されたアイテムが表示されていないため、parent.getChildAt ... を介してアクセスできないため、誤って強調表示されたアイテムをリセットできます...