サンプルアプリケーションを使用してAndroidを学習しています。複数の選択リストを表示することになっています。ユーザーがボタンをクリックすると、上部にTextViewで選択された項目が表示されます。 ListViewから選択した項目を取得しようとすると、空の配列が常に返されるようです。誰が私に説明して、なぜこれが当てはまるのか、私はそれが正しく動作するように何が欠けているのかを説明できますか?getListView()を使用しているときに空の配列。getCheckedItemIds()
package com.commonsware.android.checklist;
import android.os.Bundle;
import android.app.ListActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.view.*;
public class ChecklistDemo extends ListActivity {
private static final String[] items={"lorem", "ipsum", "dolor",
"sit", "amet",
"consectetuer", "adipiscing", "elit", "morbi", "vel",
"ligula", "vitae", "arcu", "aliquet", "mollis",
"etiam", "vel", "erat", "placerat", "ante",
"porttitor", "sodales", "pellentesque", "augue", "purus"};
private TextView selection;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice,
items));
selection = (TextView)findViewById(R.id.selection);
}
public void listSelected(View view) {
long[] chosenOnes = getListView().getCheckedItemIds();
selection.setText("Items selected: ");
selection.setText(Integer.toString(chosenOnes.length));
for (long x:chosenOnes) {
int i = Long.valueOf(x).intValue();
selection.setText(selection.getText() + ", " + items[i]);
}
}
}
素晴らしい、おかげでそのための束を使用することができます。フォローアップとして、私はちょうど正確にIDを安定させるものについて何らかの明確化を求めることができます。 –
ええ、私も知りたいです。私はそれは各IDが常に同じオブジェクトに対応していることを推測していますが、ドキュメントはまったく明確ではありません。 – Timmmm
たとえば、BaseAdapterのhasStableIds()メソッドをオーバーライドし、getId()が正しく実装されている場合はtrueを返すことができます。 – Ostkontentitan