2012-04-23 2 views
1

Мне нужно отобразить несколько списков ListView в одном действии, используя данные из запроса базы данных для каждого ListView, но я не могу одновременно отображать два списка ListViews, используя следующий код. Может кто-нибудь, пожалуйста, подтвердите, если можно использовать SimpleCursorAdapter таким образом, и если да, что случилось с моим кодом ниже:Несколько ListViews с использованием android simpleCursorAdapter

Мой XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<LinearLayout 
    android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    android:layout_weight="1" > 

    <ListView 
     android:id="@+id/symptomsList" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:visibility="visible"> 
    </ListView> 
</LinearLayout> 


<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" > 

    <ListView 
     android:id="@+id/syndromesList" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:visibility="visible"> 
    </ListView> 
</LinearLayout> 

и ява:

import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 




public class TestActivity extends Activity { 


ListView symptomsList; 
ListView syndromesList; 
SimpleCursorAdapter adapter; 
SimpleCursorAdapter adapter2; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.test); 

// Find views 
    symptomsList = (ListView) findViewById(R.id.symptomsList); 
    syndromesList = (ListView) findViewById(R.id.syndromesList); 


SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase(); 



    Cursor cursor = db.rawQuery("SELECT _id, symname FROM tblsymptoms WHERE _id = 1", null); 



    adapter = new SimpleCursorAdapter(
      this, 
      R.layout.test_list_item, 
      cursor, 
      new String[] {"symname"}, 
      new int[] {R.id.text1,}); 
    symptomsList.setAdapter(adapter); 




Cursor cursor2 = db.rawQuery("SELECT tblsyndromes._id, tblsyndromes.synname FROM tblsyndromes WHERE _id = 1", null); 

adapter2 = new SimpleCursorAdapter(
     this, 
     android.R.layout.simple_list_item_multiple_choice, 
     cursor2, 
     new String[] {"synname", "_id"}, 
      new int[] {android.R.id.text1, android.R.id.text2}); 
symptomsList.setAdapter(adapter2); 
symptomsList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 


} 
} 

ответ

2

взгляд на свой код ...

symptomsList.setAdapter(adapter); 
symptomsList.setAdapter(adapter2); // problem here 

Я предполагаю, что это должно быть ...

symptomsList.setAdapter(adapter); 
syndromesList.setAdapter(adapter2); 
+1

Удивительно то, что свежая пара глаза могут делать - это сработало - большое спасибо – user985869

0

У меня была аналогичная проблема, но когда я попытался это исправить, я получил «RuntimeException: В вашем контенте должен быть ListView, атрибут id которого «android.R.id.list»

Мое решение состояло в том, чтобы сделать первый список xml следующим образом

<listView 
android:id="@+id/android:list" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent"> 
</ListView> 

Второй ListView XML как этот

<listView 
android:id="@+id/android:list2" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent"> 
</ListView> 

Затем в коде Java

Первый использует setListAdapter и второй использует setAdapter (myadapter)

 Смежные вопросы

  • Нет связанных вопросов^_^