0

抱歉,如果有人问过这个问题,我搜索了但没有找到任何东西。我正在android中制作一个表格,并且有一些复选框,如果它们被选中,我想传递它们。所以我制作了复选框并将视图投射到复选框,因此它将检查我单击的任何复选框(尚未添加复选框侦听器)。问题是,当它确定选中了一个复选框时,我想让该框的布尔值为真

例如,当您勾选购买复选框时,我希望将 isbuyable 布尔值设置为 true。如果不使用许多 if 语句来设置每个语句,这是否可能?我创建了字符串变量 nameofboolean,它是用于更改状态的布尔值的名称,但不确定现在如何在没有大量 IF 语句检查每个语句的情况下实际更改该布尔值。

编辑:为了澄清,我想要的只是在选中复选框时将与每个复选框匹配的布尔值设置为 true。如果可能的话,我只是不想使用很多 IF 来做到这一点。

package com.Assist.assistme;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Spinner;
import android.widget.TextView;

public class market extends Activity implements OnItemSelectedListener
{
//UI elements
TextView choose;
Spinner list;
TextView buyrent;
CheckBox buyable;
CheckBox rentable;
TextView type;
CheckBox hard;
CheckBox soft;
CheckBox ebook;
TextView condition;
CheckBox new_book;
CheckBox used_book;
Button search;

String course_chosen;
Boolean isbuyable;
Boolean isrentable;
Boolean ishard;
Boolean issoft;
Boolean isebook;
Boolean isnew_book;
Boolean isused_book;



@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.market);

    iteminit();

    OnClickListener checkboxlistener = new OnClickListener()
    {

        @Override
        public void onClick(View v) 
        {
            if(((CheckBox) v).isChecked())
            {
                String nameofboolean = "is" + v.toString();

            }

        }

    };


}

private void iteminit() 
{
    choose = (TextView)findViewById(R.id.market_choose);
    buyrent = (TextView)findViewById(R.id.market_buyrent);
    buyable = (CheckBox)findViewById(R.id.market_buy);
    rentable = (CheckBox)findViewById(R.id.market_rent);
    type = (TextView)findViewById(R.id.market_type);
    hard = (CheckBox)findViewById(R.id.market_hardcover);
    soft = (CheckBox)findViewById(R.id.market_softcover);
    ebook = (CheckBox)findViewById(R.id.market_ebook);
    condition = (TextView)findViewById(R.id.market_condition);
    new_book = (CheckBox)findViewById(R.id.market_new);
    used_book = (CheckBox)findViewById(R.id.market_used);
    search = (Button)findViewById(R.id.market_search);

    list = (Spinner)findViewById(R.id.market_list);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.course_choices, android.R.layout.simple_spinner_item);                 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    list.setAdapter(adapter);
    list.setOnItemSelectedListener(this);

}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos,
        long id) 
{
    course_chosen = parent.getItemAtPosition(pos).toString();

}
@Override
public void onNothingSelected(AdapterView<?> arg0) 
{

}

}

提前致谢

4

1 回答 1

1

如果我理解你的问题,你想要这样的东西

CheckBox buyable,rentable,hard,soft,ebook,condition,new_book,used_book;
CheckBox[] checklist={ buyable,rentable,hard,soft,ebook,condition,new_book,used_book};
int ids[]={R.id.market_buy,R.id.market_rent,R.id.market_hardcover,R.id.market_softcover,R.id.market_ebook,R.id.market_new,R.id.market_used};

在设置 contentView 后的 onCreate

for(int i=0;i<checklist.length;i++)
{
checklist[i]=findViewById(ids[i]);
}

像这样调用这个方法

String data=getAllcheckedValues();

获取所有选中的值

public String getAllCheckedValues()
{
String checkItems="";
for(int i=0;i<checklist.length;i++)
{
if(checklist[i].isChecked())
{
checkItems+=checkItems+checklist[i].getText()+"is Checked"+"\n";
}
}
return checkItems;
}

根据您的要求格式化字符串。

于 2013-02-23T17:06:36.193 回答