2012-09-04 4 views
0

나는 sqlite db에서 데이터를 얻는 방법에 대한 기본 전제를 ​​가지고 있으며 logcat에 반환 된 항목을 기록하도록했습니다. 그러나, 나는 그 데이터를리스트 뷰로 출력하는 가장 좋은 방법을 찾지 못하고있다.Android : 간단한 커서를 listview에 연결

처음에는 데이터를 배열에 넣고 그 배열을 사용하여 목록보기를 설정했지만 커서를 직접 데이터 소스로 연결하여 볼 수는 있지만 꽤 많이 얻을 수는 없습니다. 그 주위에 내 머리. (내가 조금 더 그것을 밖으로 근무 일단 내가 그것을 자신의 헬퍼 클래스에서 SQL을 넣어 것입니다,하지만 지금은 모든 주요 활동에서의) 여기

내 MainActivity입니다

내 주요 활동 입니다 :

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     SQLiteDatabase db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null); 
     Cursor c = db.rawQuery("SELECT * FROM MyTable", null); 
     c.moveToFirst(); 
     Log.e("TomDebug", c.getString(c.getColumnIndex("FirstName"))); 
     db.close(); 

    } 

} 

내 레이아웃 activiy_main.xml은 다음과 같습니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="fill" > 

    <ListView 
     android:id="@+id/derooms" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 
    </ListView> 

</RelativeLayout> 

내 표는 세 ​​개의 열이 있습니다,하지만 지금 난 그냥에 데이터베이스에있는 모든 FirstNames 밖으로 분출에 만족하실 것입니다 명부 보기

답변

1

목록보기에 줄을 코딩하지 않은 것으로 보입니다. 기여도가 약하기 때문에 질문에 답변하지 않아야합니다. 어쨌든, 대답은 다음과 같습니다 :

(1) 목록보기에서 정보를 표시하기 위해 list_view_item.xml을 작성하십시오 (예 : 데이터 필드를 보여주기 위해).

(2) DB 커서 당신의 결과에 바운드에 DataBoundAdapter 만들기 : 당신의 목록보기가있는 동안 데이터베이스를 닫지 마십시오,

ListView myListView = (ListView)findViewById(R.id.derooms); 
DataBoundAdapter dbAdapter = new DataBoundAdapter(this, your_db_cursor, true); 
myListView.setAdapter(dbAdapter); 
+0

도움 주셔서 감사합니다. 켈빈, 감사합니다. – TMB87

0

커서 어댑터가 필요합니다. http://developer.android.com/reference/android/widget/CursorAdapter.html

SimpleCursorAdapter를 사용하여 시작할 수 있습니다. 11+를 타겟팅하는 경우 http://developer.android.com/reference/android/content/CursorLoader.html

+0

도 :

public class DataBoundAdapter extends CursorAdapter { Context _context; public DataBoundAdapter(Context context, Cursor c, boolean autoRequery) { super(context, c, autoRequery); _context = context; } @Override public void bindView(View view, Context c, Cursor cur) { // TODO: handle data when binding to your list view } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { int item_view_id = R.layout.list_view_item; //inflate item view to list view holder LinearLayout holderView = new LinearLayout(_context); String inflaterName = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater inflater = (LayoutInflater) _context.getSystemService(inflaterName); inflater.inflate(item_view_id, holderView, true); return holderView; } } 

(3) MainActivity.onCreate(..)에서 명백한. – njzk2

관련 문제