2014-09-17 3 views
1

Читайте много документов, но не можете понять, что я делаю неправильно. Я просто пытаюсь загрузить данные с курсором и показать его в ListView с помощью SimpleCursorAdapter.Here мой код:Android ListView и SimpleCursosrAdapter: ничего не отображается

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.select_expense_category); 
    DBHelper dbHelper = new DBHelper(this); 
    SQLiteDatabase db = dbHelper.getReadableDatabase(); 
    String q = "SELECT rowid as _id, " + GLO.DBEntry_Categories.COLUMN_CATEGORY + 
      " FROM " + GLO.DBEntry_Categories.TABLE_NAME; 
    Cursor cursor = db.rawQuery(q, new String[]{}); 
    cursor.moveToFirst(); 
    Toast toast = Toast.makeText(this, "Read count: " + Integer.toString(cursor.getCount()) + " " + cursor.getString(0), Toast.LENGTH_LONG); 
    toast.show(); 
    cursor.moveToFirst(); 
    //TODO: use Loader 
    String[] fromCols = {GLO.DBEntry_Categories.COLUMN_CATEGORY}; 
    int[] toViews = {R.id.MyTextView1}; 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, 
      fromCols, toViews, 0); 

    ListView listView = (ListView) findViewById(R.id.SelectExpenseCategory_list); 
    listView.setAdapter(adapter); 
} 

Так тост сообщение показывает, что 3 элементы в позиции курсора и данные peresent (по крайней мере в первый, но я уверен и для других). Но ничего не отображается в ListView.

Вот часть моего макета деятельности:

<ListView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/SelectExpenseCategory_search" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/SelectExpenseCategory_list"> 
</ListView> 

А вот полный файл для размещения элемента:

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/MyTextView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:padding="5dp" 
    android:textColor="@color/cm_dark_green" 
    android:textSize="24sp"> 
</TextView> 

Любые идеи, что это неправильно ..

ответ

1

Вы? используя внутренний макет для элементов списка: android.R.layout.simple_list_item_1.

TextView идентификатор там называется text1, поэтому вместо того, чтобы использовать эту функцию:

int[] toViews = {android.R.id.text1}; 

Если вы хотите использовать свой собственный макет затем изменить макет, используемый адаптером для, например, R.layout.list_item_layout.

+0

Я изменил toViews на внутренний идентификатор, как вы предполагали, но ничего не изменилось. В моем ListView ничего нет :( – Andrew

+0

@ Andy и Toast показывают правильный подсчет – Simas

+0

Да. Я изменил его, чтобы показать количество всех записей и содержимого первых двух записей, и он показывает, что в базе данных есть 4 записи и первый два имеет значение – Andrew

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