【问题标题】:Unable to "check" dynamically created checkboxes无法“检查”动态创建的复选框
【发布时间】:2018-03-06 01:07:57
【问题描述】:

我正在尝试根据在我的“颜色”微调器中选择的项目动态创建复选框。

例如:如果我在微调器上选择 "red",将创建​​以下复选框:Apple [ ]、Strawberry [ ]、Cherry [ ]。如果我从微调器中选择 "yellow",则会创建以下复选框:Banana [ ]、Pineapple [ ]

我的代码在运行时可以正常工作并正确显示列出的项目,但是为什么我按下动态生成的复选框“uncheckable”?小“复选标记”根本没有出现在方框中。

private Fruits fruit = new Fruits();

final GridView gv = (GridView) findViewById(R.id.gv);
Spinner sp = (Spinner) findViewById(R.id.sp);

sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

   @Override
   public void onItemSelected(AdapterView<?> adapterView, View v, int pos, long l){

      String item = (String) adapterView.getItemAtPosition(pos);
      List<String> myList = fruit.getFruits(item);

      ArrayAdapter<String> adapter_1 = new ArrayAdapter<String>(Activity_1.this, android.R.layout.simple_list_item_multiple_choice, myList);
      gv.setAdapter(adapter_1);
   }

编辑:

我正在使用Fruits java 类来生成我的复选框项目:

public class Fruits {
   List<String> getFruits(String colour) {
      List<String> fruit = new ArrayList<String>();

      if (colour.equals("red")) {
          fruit.add("Apple");
          fruit.add("Strawberry");
          fruit.add("Cherry");
      }
      else if (colour.equals("yellow") {
          fruit.add("Banana");
          fruit.add("Pineapple");
      }

      return fruit;

   }
}

我没有使用 string.xml 文件来填充我的复选框项目。

【问题讨论】:

  • 我可能遗漏了一些东西,但看起来您正在创建一个字符串列表而不是复选框。您在哪里动态创建复选框?
  • 啊,我不太确定。我刚刚开始使用 Android 编程。我是否会这样做:CheckBox chk = new CheckBox();onItemSelected
  • 一般是这样的。自从我做 Android 工作以来已经有一段时间了,我不在我的工作站旁边检查它。但一般来说,您需要创建新视图,在本例中为 CheckBox,然后将其添加到您想要的任何视图中,例如 GridView。然后它应该工作
  • 如果你也附上你的xml文件会更容易指导。
  • 我实际上使用了一个名为Fruits 的Java 类(因此我在最顶部实例化了它)。在那个 Fruits java 类中只是简单的 if-else 语句,例如 if(fruit.equals("red")) { fruit.add("Apple") }

标签: android arraylist checkbox checkboxlist


【解决方案1】:

要选中一个复选框,您需要添加 setChecked。在您的 onItemSelected 中添加此代码以使其选中

checkbox.setChecked(true);

另外在你的代码中我认为没有动态创建复选框。如果你想动态创建复选框然后像这样创建

CheckBox checkbox = new CheckBox(this);
checkboxsetText("created new checkbox");

【讨论】:

  • 如何将选中框的文本值传递给我的下一个活动?
  • 每当点击某物时,将该位置的列表项传递给下一个活动
猜你喜欢
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多