如何在Android中从ListActivity获取多个选定项

如何在Android中从ListActivity获取多个选定项,android,listactivity,multiple-select,Android,Listactivity,Multiple Select,我基本上是在尝试在启用多项选择的ListActivity中选择哪些项目。我相信有很多Android程序员都希望澄清这一点。此应用程序运行正常,直到到达FOR循环并尝试将多项选择项的值分配给ArrayList“items”。我只是尝试使用Toast来查看多选项是否被分配给Arraylist“items”。单击按钮时,应用程序崩溃。测试是在安卓2.2模拟器中完成的 这是我的Main.xml布局 <?xml version="1.0" encoding="utf-8"?> <Line

我基本上是在尝试在启用多项选择的ListActivity中选择哪些项目。我相信有很多Android程序员都希望澄清这一点。此应用程序运行正常,直到到达FOR循环并尝试将多项选择项的值分配给ArrayList“items”。我只是尝试使用Toast来查看多选项是否被分配给Arraylist“items”。单击按钮时,应用程序崩溃。测试是在安卓2.2模拟器中完成的

这是我的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();
            }
        }

     });        
}
}
package com.tests.TestCode;
导入android.app.ListActivity;
导入android.os.Bundle;
导入java.util.ArrayList;
导入android.util.SparseBooleanArray;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.Toast;
公共类MainActivity扩展了ListActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
最终字符串[]列表={“扳手”、“锤子”、“钻头”、“螺丝刀”、“锯”、“凿子”、“紧固件”};
//正在初始化ListActivity的ArrayAdapter对象
最终ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u多选,list);
setListAdapter(适配器);
Button Button=(Button)findViewById(R.id.Button);
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
ListView thelistview=(ListView)findViewById(android.R.id.list);
arraylistitems=null;
SparseBooleanArray checkedItems=listView.getCheckedItemPositions();
if(checkedItems!=null){

对于(int i=0;i您的
项目
列表为空,您尝试在初始化它之前使用它


在尝试使用它之前,您需要在某个地方使用
items=new ArrayList();
,否则您将不断收到NullPointerException。

您的
items
列表为空,您在初始化它之前尝试使用它


在尝试使用它之前,您需要在某个地方使用
items=new ArrayList();
,否则您将不断收到NullPointerException。

谢谢SleepBear…它现在可以工作了!只需将ArrayList items定义为not null并为其分配一个空白的“new ArrayList()'值。再次感谢!感谢SleepBear…它现在可以工作了!只需将ArrayList项定义为not null并为其分配一个空白的'new ArrayList()'值。再次感谢!