【问题标题】:Checkbox item adds to spinner复选框项目添加到微调器
【发布时间】:2015-10-15 13:03:00
【问题描述】:

我有两个复选框,当一个复选框项目被选中时,它应该被添加到微调器。可以这样做吗?在谷歌上找不到它,所以希望有人能在这里救我:) 我的微调器:

public class Checkbox extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_checkbox);

    Spinner spinner;
    spinner = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.itinerary, android.R.layout.simple_spinner_item);
    spinner.setAdapter(adapter);

}

布局

<CheckBox
    android:id="@+id/cbSiargao"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Surigao"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="104dp" />

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/spinner2"
    android:layout_alignTop="@+id/cbSiargao"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="139dp"
    android:layout_marginStart="139dp" />

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Boracay"
    android:id="@+id/checkBox"
    android:layout_below="@+id/cbSiargao"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

【问题讨论】:

  • 放上你的微调器适配器
  • 添加微调器适配器完成。下一步是什么?如何将选中的复选框添加到我的微调器?
  • 什么?在哪里?我看不到适配器代码
  • 那里。我真的应该添加这个“R.array.itinerary”,因为我想在我的微调器上查看的项目是在我的复选框上选中的项目?

标签: java android checkbox spinner


【解决方案1】:

您需要重新实现微调器适配器。这是一个简单的例子:

public class SpinnerAdapterExample implements SpinnerAdapter {
    public ArrayList<String> items = new ArrayList<>();

@Override
public int getCount() {
    return items.size();
}

@Override
public View getView(int position, View parent, ViewGroup viewGroup) {
    TextView textView = new TextView(parent.getContext());
    textView.setText(items.get(position));
    return textView;
}

不要忘记重新实现其他必需的方法,但您可以保持原样。

在您的复选框类中添加以下内容:

SpinnerAdapterExample adapter = new SpinnerAdapterExample();
spinner.setAdapter(adapter);

然后,每当您需要向微调器添加一些内容时,请编写以下代码:

adapter.items.add("new item");
spinner.notifyOnDatasetChanged();

【讨论】:

  • 所以会有两个班级?嗯.. 我将把这个适配器放在哪里。 item.add("new item"); spinner.notifyOnDatasetChanged(); ?
  • 每次你想要一个项目到微调器时都应该添加这两行。当然,您必须将“新项目”更改为您实际要添加的项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多