listView があり、各項目を押したときに展開したいと考えています。そのための次のコードがあります。ViewStub を膨らませて作業します。
それは正常に動作します。つまり、リスト項目を押すと、実際に膨らみます。ここまでは順調ですね。
ただし、私のリストは長く、リストを下にスクロールすると、他の項目も膨らんでいることに気付きました。理由はよくわかりません。そして、もう一度上にスクロールすると、最初に押したアイテムが「収縮」し、代わりに他のアイテムが膨張しました。
@override
public void onListItemClick(ListView l, View v, int position, long id) {
ListView list = getListView();
int start = list.getFirstVisiblePosition();
for (int i = start, j = list.getLastVisiblePosition(); i <= j; i++) {
Cursor item = (Cursor) list.getItemAtPosition(i);
if (id == item.getLong(item.getColumnIndex(ItemColumns._ID))) {
View view = list.getChildAt(i - start);
ViewStub stub = (ViewStub) view.findViewById(R.id.stub);
if (stub != null) {
stub.inflate();
}
}
}
}
どんな助けでも大歓迎です!