私はAndroidでのプログラミングが初めてで、ユーザーが2つのスピナーからいくつかのオプションを選択できるアプリを作成しようとしています。検索ボタンをタップすると、アプリは選択されたオプションに基づいてデータベースを検索し、結果が表示されます. 問題は、選択したスピナー オプションの値を使用して検索するために db.rawQuery にどのパラメータを入力すればよいかわからないことです。以下に大まかな推測を入れようとしましたが、うまくいかず、両方の基準を使用して検索する方法がわかりません。
スピナーのコーディングは次のとおりです。
public class First extends Activity {
private Spinner foodSpinner, locationSpinner;
private Button btnSubmit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
addListenerOnButton();
}
public void addListenerOnButton() {
foodSpinner = (Spinner) findViewById(R.id.foodSpinner);
locationSpinner = (Spinner) findViewById(R.id.locationSpinner);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
btnSubmit.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(First.this.getApplicationContext(), MainActivity.class);
intent.putExtra("FOODSPINNER", foodSpinner.getSelectedItem().toString());
intent.putExtra("LOCATIONSPINNER", locationSpinner.getSelectedItem().toString());
First.this.startActivity(intent);
}
});
}
検索のコーディングは次のとおりです。
public class MainActivity extends ListActivity {
protected SQLiteDatabase db;
protected Cursor cursor;
protected ListAdapter adapter;
protected String foodItemChosen;
protected String locationItemChosen;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
foodItemChosen = getIntent().getExtras().getString("FOODSPINNER");
locationItemChosen = extras.getString("LOCATIONSPINNER");
db = (new DatabaseHelper(this)).getWritableDatabase();
}
public void onListItemClick(ListView parent, View view, int position, long id) {
Intent intent = new Intent(this, ResultDetails.class);
Cursor cursor = (Cursor) adapter.getItem(position);
intent.putExtra("FOOD_ID", cursor.getInt(cursor.getColumnIndex("_id")));
startActivity(intent);
}
public void search(View view) {
cursor = db.rawQuery("SELECT _id, name, address FROM database WHERE food LIKE ?",
new String[]{"%" '+foodItemChosen+' "%"});
adapter = new SimpleCursorAdapter(
this,
R.layout.result_list_item,
cursor,
new String[] {"name", "address"},
new int[] {R.id.name, R.id.address});
setListAdapter(adapter);
}
}