gpt4 book ai didi

android - 如何从 Android 中的 ListActivity 中获取多个选定项目

转载 作者:行者123 更新时间:2023-11-30 04:20:12 27 4
gpt4 key购买 nike

我基本上是在尝试获取在启用多项选择的 ListActivity 中选择了哪些项目。我敢肯定,有许多 Android 新手希望了解这一点。此应用程序运行良好,直到它进入 FOR 循环并尝试将多选项目的值分配给 ArrayList“项目”。我只是想使用 Toast 来查看是否将多选项目分配给 Arraylist“项目”。单击按钮时应用程序崩溃。测试是在 android 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();
}
}

});
}
}

非常感谢能够就完成此 ListActivity 场景的最佳方式提供良好答案的任何人,或任何能够解释为什么应用程序在分配给 ArrayList 时崩溃的人。谢谢!

最佳答案

你的 items list 为空,您在初始化之前尝试使用它。

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

关于android - 如何从 Android 中的 ListActivity 中获取多个选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386783/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com