基本的には、複数選択可能なListActivity内で選択された項目を取得しようとしています。私はこれが明らかにされることを愛する多くの初心者のAndroidプログラマーがいると確信しています。このアプリケーションは、FORループに到達し、複数選択項目の値をArrayListの 'items'に割り当てるまでうまく動作します。私はトーストを使って複数選択肢の項目がArraylistの項目に割り当てられているかどうかを確認しようとしています。ボタンをクリックするとアプリがクラッシュします。テストはアンドロイド2.2エミュレータで実行されます。ここ複数の選択項目をAndroidのListActivityから取得する方法
は私のMain.xmlレイアウトは
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Selected Items" />
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:choiceMode="multipleChoice"
android:textFilterEnabled="true" android:fastScrollEnabled="true" >
</ListView>
</LinearLayout>
であり、ここでのように良い答えを提供することができます誰にも多くの義務コード
package com.tests.TestCode;
import android.app.ListActivity;
import android.os.Bundle;
import java.util.ArrayList;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final String[] list = {"wrenches","hammers","drills","screwdrivers","saws","chisels","fasteners"};
// Initializing An ArrayAdapter Object for the ListActivity
final ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_multiple_choice, list);
setListAdapter(adapter);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ListView thelistview = (ListView) findViewById(android.R.id.list);
ArrayList<String> items = null;
SparseBooleanArray checkedItems = thelistview.getCheckedItemPositions();
if (checkedItems != null) {
for (int i=0; i<checkedItems.size(); i++) {
if (checkedItems.valueAt(i)) {
String item = adapter.getItem(checkedItems.keyAt(i)).toString();
items.add(item);
}
}
Toast.makeText(getBaseContext(), items.toString(), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getBaseContext(), "checkedItems == null", Toast.LENGTH_LONG).show();
}
}
});
}
}
ですこのListActivityシナリオを達成するための最善の方法、またはArrayListへの割り当て時点でアプリがクラッシュする理由を説明できる人。ありがとう!
ありがとうございましたSleepybear ...今すぐ機能します! ArrayList項目をnullでないとして定義し、空の 'new ArrayList()'という値を代入するだけです。再度、感謝します! –
Robogenus