2013-06-11 1 views
0

Хорошо, я знаю, что этот вопрос задавался много раз здесь, и я пробовал все решения, но ни один из них не работает. Я следую учебной книге Android, и я пытаюсь отобразить данные из базы данных в виде ListView с помощью SimpleCursorAdapter, чтобы подключить его. Экран, который должен показывать данные, не показывает ничего, кроме названия.ListView + SimpleCursorAdapter не отображает данные

package com.example.yamba; 

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

public class TimelineActivity extends Activity { 
    static final String[] FROM = { StatusData.C_USER,StatusData.C_TEXT, StatusData.C_CREATED_AT}; 
    static final int[]TO = {R.id.text_user,R.id.text_text,R.id.text_createdAt}; 

    ListView list; 
    Cursor cursor; 
    SimpleCursorAdapter adapter; 

    @SuppressWarnings("deprecation") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.timeline); 
     list = (ListView) findViewById(R.id.list); 


     adapter = new SimpleCursorAdapter(this, R.layout.row, cursor, FROM, TO); 
     list.setAdapter(adapter); 

     cursor = ((YambaApp) getApplication()).statusData.query(); 
//  while (cursor.moveToNext()) { 
//   String user = cursor.getString(cursor.getColumnIndex(StatusData.C_USER)); 
//   String text = cursor.getString(cursor.getColumnIndex(StatusData.C_TEXT)); 
//   list.append(String.format("\n%s: %s", user, text)); 
//  } 
    } 
} 



***Timeline.xml*** 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/my_blue" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/timeline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/Timeline" /> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

    </ListView> 
    <!-- 
<ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/timelineView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</ScrollView> 
    --> 

</LinearLayout> 



***row.xml*** 

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/text_user" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="Slashdot" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/text_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/text_createdAt" 
     android:text="A really long example tweet for just test purposes" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/text_createdAt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/text_user" 
     android:layout_alignBottom="@+id/text_user" 
     android:layout_alignParentRight="true" 
     android:text="10 minutes ago" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

</RelativeLayout> 

Я наклеил свой код выше. Может ли кто-нибудь сказать мне, что испортило дисплей? Внимательно оцените помощь

Спасибо!

ответ

1

Курсор должен быть создан до создания SimpleCursorAdapter, в противном случае, что вы передаете конструктору. Вот перепишите:

super.onCreate(savedInstanceState); 

setContentView(R.layout.timeline); 
list = (ListView) findViewById(R.id.list); 


cursor = ((YambaApp) getApplication()).statusData.query(); 
adapter = new SimpleCursorAdapter(this, R.layout.row, cursor, FROM, TO); 
list.setAdapter(adapter); 
+0

Oh Wow. Это заставило его работать. Большое спасибо порту Лайонела. Я провожу почти час, пытаясь отладить его. !! – user1660568

+0

Нет проблем, иногда это требует свежей пары глаз. –

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

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