私はこのような状況にあります。
私のレイアウトでは、3 つのボタンと 2 つのラジオボタンを持つ 1 つのラジオグループがあります。ユーザーは 、 を押してbutton1
、button2
ラジオボタンの 1 つを選択する必要があります。その後、ラジオボタンを押すbutton3
と、データベースへのクエリが実行されます。
を押すbutton1
と、クエリが実行され、結果が MultipleChoiceItems AlertDialog に表示されます。
いくつか質問があります。
複数の選択肢項目
この AlertDialog には 3 つの問題があります。
最初: クエリの結果が AlertDialog に表示されますが、いずれかの項目を押してもチェックボックスにチェックマークが付きません。トースト メッセージで、項目がチェックされていることがわかります。
2 番目: クエリはデータベースに対して実行されますが、クエリによって返されない要素を 1 つ追加できますか? クエリの後で、AlertDialog が , , を示していると想像しOne
てTwo
くださいThree
。もう一品追加したいです。This was not returned by the query
、、、One
のようなTwo
ものThree
。
三番:
public AlertDialog.Builder setMultiChoiceItems (Cursor cursor, String isCheckedColumn, String labelColumn, DialogInterface.OnMultiChoiceClickListener listener)
2 番目のパラメーターは、チェックされるアイテムまたはチェックされないアイテムを設定することです。私のデータベースにはこの列がないため、常にゼロとは異なることがわかっている列を 1 つ渡しました。これをバイパスする方法はありますか?
これは私のコードです:
public class MyClass extends ListActivity implements OnClickListener, OnCheckedChangeListener {
Database db = new Database(this);
int order;
boolean groupCheck = false;
boolean orderCheck = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.n);
Button proc = (Button) findViewById(R.id.procButtonProc);
proc.setOnClickListener(this);
Button pickGroup = (Button) findViewById(R.id.procButtonGroup);
pickGroup.setOnClickListener(this);
RadioGroup pickOrder = (RadioGroup) findViewById(R.id.procRadioOrder);
pickOrder.setOnCheckedChangeListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.procButtonGroup) {
db.open();
final Cursor query = db.getData(0, 0, null);
AlertDialog.Builder pickGroup = new AlertDialog.Builder(this);
pickGroup.setTitle(getString(R.string.procGroupTitle));
pickGroup.setMultiChoiceItems(query, "GROUP_NAME", "GROUP_NAME", new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
query.moveToPosition(which);
String str = query.getString(1).toString();
Toast.makeText(MyClass.this, "You have selected " + str, Toast.LENGTH_LONG).show();
// ListView list = ((AlertDialog) dialog).getListView();
// list.setItemChecked(which, true);
}
}
});
pickGroup.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
pickGroup.show();
db.close();
}
if (v.getId() == R.id.procButtonProc) {
if (orderCheck == true && groupCheck == true) {
// Based on the conditions, perform query on the database
} else {
Toast.makeText(getApplicationContext(), "Select GROUP, N and ORDER", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId) {
case R.id.procOrderASC:
order = 0;
orderCheck = true;
break;
case R.id.procOrderDSC:
order = 1;
orderCheck = true;
break;
}
}
}
ありがとう、
お気に入り