1

Disease_table と sysmptoms_table という名前の 2 つのテーブルがあります。DB から Disease_table からデータを取得してリストビューに表示し、リスト項目をクリックすると、それに応じて疾患カテゴリの症状を選択して表示する必要があり、それは成功しましたが、私のコードには冗長性があり、2 つのメソッドをdatahelper クラスを使用して、別のリストビューで疾患ごとに症状を取得します。WHERE "disease_id=1"外部キー参照 ありの条件でクエリを使用してリストビューで症状データを取得しています

メソッドのコードは次のとおりです。

//getting pain symptom names in a arraylist and then display in listview
//this.setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1,symptompain));

public List<String> getAllSymptomPain() {
    List<String> symptompain = null;

    cr = db.query(SYMPTOM_TABLE_NAME, new String[] {"symname"}, "diseaseid=1", null, null, null, null);

    if(null != cr){
        symptompain = new ArrayList<String>();
        if (cr.moveToFirst()) {
            do {
                symptompain.add(cr.getString(0));
            }  while (cr.moveToNext());
        }

        if (cr != null && !cr.isClosed()) {
            cr.close();
        }
    }
    return symptompain;
}




//getting colorchange symptom names in a arraylist and then display in listview 
//this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,symptomcolorchange));


public List<String> getAllSymptomColorChange() {
    List<String> symptomcolorchange = null;

    cr = db.query(SYMPTOM_TABLE_NAME, new String[] {"symname"}, "diseaseid=2", null, null, null, null);

    if(null != cr){
        symptomcolorchange = new ArrayList<String>();
        if (cr.moveToFirst()) {
            do {
                symptomcolorchange.add(cr.getString(0));
            }  while (cr.moveToNext());
        }

        if (cr != null && !cr.isClosed()) {
            cr.close();
        }
    }
    return symptomcolorchange;
}

これら 2 つを 1 つのメソッドに記述してから、メソッドの下で listactivity を拡張するクラスで呼び出すにはどうすればよいonListItemclickですか?

そして私のOnListItemClick()方法は次のとおりです:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);

    String item=(String)getListAdapter().getItem(position);
    if(item.equals("Pain in Teeth")){
        // passing the method here
    }
    else if(item.equals("Pain in Gums")){
        // passing the method here
    }
    else if(item.equals("Pain in Mucosa")){
        // passing the method here
    }
    else if(item.equals("Pain in TMJoint")){
        // passing the method here
    }
    else if(item.equals("Non-Specific Pain")){
        // passing the method here
    }
}
4

1 に答える 1

0

これを試して:

public List<String> getSymptomsByDiseaseId(long diseaseId) {

    List<String> symptomsList = new ArrayList<String>();

    String selection = "diseaseid=?";
    String[] selectionArgs = { String.valueOf(diseaseId) };
    Cursor cursor = db.query(false, SYMPTOM_TABLE_NAME, null, selection, selectionArgs, null, null, null, null);
    if (cursor.moveToFirst()) {
        do {
            symptomsList.add(cursor.getString(0));
        } while (cursor.moveToNext());
    }
    cursor.close();

    return symptomsList;
}
于 2013-07-18T06:13:25.187 に答える