gpt4 book ai didi

java - 显示索引而不是文本的复选框

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:34 26 4
gpt4 key购买 nike

我是 Android 新手,目前是我在 I.t. 工作的第二年。

我正在开发一个杂货 list 应用程序项目,我在其中显示杂货列表,供用户选择并在下一个屏幕(屏幕 2)上显示它们。

我遇到的问题是,当我单击“显示列表”按钮时,它显示所选复选框的索引而不是显示的文本...我尝试使用 ListActivity 在 CheckedTextView 中显示数组,但是也没有成功(复选框在选择时没有选中)。

我非常感谢有关如何显示所选文本而不是复选框所选索引的帮助,并且想知道我哪里出错了。

下面是我的 2 个屏幕的 Java 和 XML 代码..

Java 编码 - 屏幕 1

package com.allmycode.lists;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.LinearLayout;

public class MainActivity extends Activity {
static CheckBox[] checkBoxes = new CheckBox[18];

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

LinearLayout layout =
(LinearLayout) findViewById(R.id.linearLayout);
for (int i = 0; i < 18; i++) {
checkBoxes[i] = new CheckBox(this);
layout.addView(checkBoxes[i]);
}
checkBoxes[0].setText("Baking Ingredients");
checkBoxes[1].setText("Beverages");
checkBoxes[2].setText("Canned Foods");
checkBoxes[3].setText("Cereal");
checkBoxes[4].setText("Dairy");
checkBoxes[5].setText("Detergents");
checkBoxes[6].setText("Frozen Vegetables");
checkBoxes[7].setText("Fruit");
checkBoxes[8].setText("Broad Beans");
checkBoxes[9].setText("Herbs");
checkBoxes[10].setText("Legumes");
checkBoxes[11].setText("Meat");
checkBoxes[12].setText("Pasta");
checkBoxes[13].setText("Pet Food");
checkBoxes[14].setText("Rice");
checkBoxes[15].setText("Snacks");
checkBoxes[16].setText("Toiletries");
checkBoxes[17].setText("Vegetables");
}

public void onShowListClick(View view) {
Intent intent =
new Intent(this, MyListActivity.class);
startActivity(intent);
}
}

XML 编码 - 屏幕 1

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=

"http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TextView>

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onShowListClick"
android:text="@string/show_list" >
</Button>

Java 编码 - 屏幕 2

package com.allmycode.lists;

import java.util.ArrayList;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class MyListActivity extends ListActivity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ArrayList<Integer> listItems =
new ArrayList<Integer>();

for (int i = 0; i < 18; i++) {
if (MainActivity.checkBoxes[i].isChecked()) {
listItems.add(i);
}
}

setListAdapter(new ArrayAdapter <Integer> (this,
R.layout.my_list_layout, listItems));
}
}

XML 编码 - 屏幕 2

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id="@+id/identView"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>

最佳答案

您只是设置索引,因此发生的情况是有意义的:

ArrayList<Integer> listItems = new ArrayList<Integer>(); // <-- List of Integers

for (int i = 0; i < 18; i++) {
if (MainActivity.checkBoxes[i].isChecked()) {
listItems.add(i); // <-- You're adding an integer to the List
}
}

试试这个:

ArrayList<String> listItems = new ArrayList<String>(); // <-- List of Strings

for (int i = 0; i < 18; i++) {
if (MainActivity.checkBoxes[i].isChecked()) {
listItems.add(MainActivity.checkBoxes[i].getText()); // Set it to the text of the Checkbox, not the integer index in the loop
}
}

setListAdapter(new ArrayAdapter<String> (this, R.layout.my_list_layout, listItems));

关于java - 显示索引而不是文本的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23250400/

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