2011-10-28 1 views
1

다음 코드를 작성하여 SQLite 데이터베이스에서 데이터를 검색했습니다.Android에서 SQLite를 Eclipse의 GridView에 바인딩

public Cursor fetchAllScores() { 
    return database.query(DATABASE_TABLE, new String[] { KEY_ROWID, 
      KEY_PLAYDATE, KEY_NUMVALA, KEY_NUMVALB }, null, null, null, 
      null, null); 
} 

는 그럼 난 일부 데이터는 이제 다음 코드를

GridView myGV = (GridView)findViewById(R.id.gridView1); 

    String[] cols = new String[] { scoreDbAdapter.KEY_PLAYDATE, scoreDbAdapter.KEY_NUMVALA, scoreDbAdapter.KEY_NUMVALB}; 
    int[] views = new int[] { android.R.id.text1, android.R.id.text2, android.R.id.text2 }; 

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      android.R.layout.simple_list_item_1, cursor, cols, views); 

    Log.w("NumRows",adapter.getCount() + ""); 

    myGV.setAdapter(adapter); 
을 사용하여 myGridView을 채울 내가 관리 커서를 한 후 다음

cursor = dbHelper.fetchAllScores(); 
    startManagingCursor(cursor); 

를 사용하여 내 main.java 파일에서이 함수를 호출 문제는 첫 번째 행이 채워져 있고 처음 두 개의 열, forst 행 (2011-10-27, 5, 6) 및 두 번째 행 (2011-10-26, 3, 2)과 같은 데이터가 필요하지만, forst와 같은 행 (20 11-10-27, 2011-10-26).

GridView에서 수정할 수 있습니까?

+0

아래의 답변을보세요. – user370305

답변

0

textViews가 포함 된 새로운 레이아웃을 만듭니다. 아래 코드의 첫 번째 줄에 표시된 레이아웃을 찾고 데이터를 listView에 첨부하십시오. ListView는 textView가 포함 된 레이아웃을로드합니다.

private void populateGrid() 
{ 

    ListView lv = (ListView)findViewById(R.id.listView1); 

    Cursor c = dbHelper.fetchAllScores(); 
    startManagingCursor(cursor); 

    String[] cols = new String[] { TodoDbAdapter.KEY_PLAYDATE, TodoDbAdapter.KEY_NUMVALA, TodoDbAdapter.KEY_NUMVALB}; 
    int[] views = new int[] { R.id.txt_date, R.id.txt_no, R.id.txt_yes}; 

    // Now create an array adapter and set it to display using our row 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      R.layout.listviewtemp, c, cols, views); 

    Log.w("NumRows",adapter.getCount() + ""); 

    lv.setAdapter(adapter); 

} 

R.layout.listviewtemp

리스트 뷰 템플릿의 레이아웃 (별도 XML)가, LV는 mainlayout.xml 검색된리스트 뷰이다.

public Cursor fetchAllScores() { 
    return database.query(DATABASE_TABLE, new String[] { KEY_ROWID, 
      KEY_PLAYDATE, KEY_NUMVALA, KEY_NUMVALB }, null, null, null, 
      null, null); 
} 
0

질문에 대해서는 Binding to Data with AdapterView을 참조하십시오.

참고 : 아래의 설명은 커서를 어댑터에 바인딩하는 방법의 예입니다.

데이터 레이아웃에 데이터를 삽입

와 레이아웃 작성은 전형적 아마도 외부 소스로부터 데이터를 검색하는 어댑터 (에리스트를 어댑터 뷰 AdapterView 클래스를 결합함으로써 수행되는 코드 용품 또는 조회 결과 장치 데이터베이스에서).

기존보기와 회 전자를 1.Creates과 지역 자원의 색상의 배열을 읽는 새로운 ArrayAdapter와에 바인드 :

다음 코드 샘플은 다음 않습니다.

2.보기에서 다른 Spinner 개체를 만들고 장치 연락처에서 사람 이름을 읽는 새로운 SimpleCursorAdapter에 바인딩합니다 (Contacts.People 참조). 가 필요하다고

// Get a Spinner and bind it to an ArrayAdapter that 

// references a String array. 

Spinner s1 = (Spinner) findViewById(R.id.spinner1); 

ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.colors, 
android.R.layout.simple_spinner_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

s1.setAdapter(adapter); 

// Load a Spinner and bind it to a data query. 
private static String[] PROJECTION = new String[] { People._ID, People.NAME}; 

Spinner s2 = (Spinner) findViewById(R.id.spinner2); 
Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null); 

SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,cur,new String[] {People.NAME}, new int[] {android.R.id.text1}); 

adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
s2.setAdapter(adapter2); 

주 CursorAdapter 사용 투영 People._ID 열을가하거나 다른 당신은 예외를 얻을 것이다.

응용 프로그램의 수명 기간 동안 어댑터가 읽는 기본 데이터를 변경하는 경우 notifyDataSetChanged()를 호출해야합니다. 연결된 뷰에 데이터가 변경되었고 자체적으로 새로 고쳐 져야 함을 알립니다. 이에서 더 많은 정보를보기 위해

,

Custom CursorAdapters.

감사합니다.