2012-02-10 18 views
-1

私のActivityにはCheckedTextViewを含むListViewがあります。アイテムがクリックされると、私はsetItemChecked(position, true)を使ってアイテムを強調表示させます。ListView.getSelectedItemPosition()は予期せず0を返します

しかし、アクティビティが起動されたばかりのとき、アイテムにタッチすると、位置0のアイテムも強調表示されます。 getSelectedItemPosition()を使用して、タッチモード(isinTouchMode = true)であっても0を返しますが、-1は返しません。

listViewをスクロールした後、正常に動作します。getSelectedItemPosition()は期待通り-1を返します。

なぜこのようなことが起こりますか?私はちょうどキーで入力されていないタッチモードで処理する活動をしたい。

避けることはできません。それを修正することはできますか? ListView.setSelection(-1)を使用しましたが、何の効果もありません。

編集:私はどうにかしていくつかの冗長コードを削除して問題を解決します。私は、ListViewコントロールの最上部に表示するリストビューで位置を指定し、活動はので、私はコードの下に使用開始するときに強調表示でアイテムをしたい:

ListView.setItemChecked(position, true); 
ListView.setSelectionFromTop(position, 0); 

何冗長である(私は二度同じコードを使用):

ListViewAdapter.notifyDataSetInvalidated(); 
ListView.setItemChecked(position, true); 
ListView.setSelectionFromTop(position, 0); 

私はこの問題を解決しますが、私はまだ何が起こっているのかを知りたいです。 listViewを2回タッチすると、位置0が選択されるのはなぜですか?

答えて

0

チェックされた行のタグを設定しましたか? getView()でビューのタグを設定する必要があります。

その後、ビューの位置を考えることができます。 これを使ってみてください(例:yourInflatedView.setTag(position);)

+0

私は疲れました。それは効果を持ちませんし、-1でもなく0を返します。 – Yeung

関連する問題