2012-11-16 1 views
4

2 개의 열 "id", "sampletext"가있는 테이블 "mytable"이 있습니다 SimpleCursorAdapter를 사용하여 sampletext의 고유 값을 쿼리하고 Spinner에 피드를 지정하려고합니다. ID가 존재하지 않습니다 여기SimpleCursorAdapter를 Spinner와 함께 사용 하시겠습니까?

내가 라인 4에서 오류가이 작업을 실행하면

String[] cols=new String[]{"sampletext"}; 
int[] lbls=new lbls[]{android.R.id.text1}; 
mycursor=sdb.query(true,"mytable", cols,null,null,null,null,null,null); 
sca=new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mycursor, cols,lbls,0); 
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spn.setAdapter(sca); 

시도되는 것입니다. 첫 번째 줄을 "id"로 변경하면 회 전자에 id 값이 채워집니다. 하지만 "sampletext"가 필요합니다. 내가 뭘 잘못하고있는 걸까요? 감사합니다 제안

답변

12
what am i doing wrong 

읽고 문서를 일부러 ... 문자열의 두 배열은 열이있다

: 첫 번째 쿼리에서 사용되는, 어댑터 생성자의 두 번째는 (당신은 모두 하나 개의 배열을 사용)

첫 번째

다음 CursorAdapter 요구 0 ... 열을 커서 이동해야 SQLite는이 두 번째 사람은 단일 행에 매핑 조회/보여되어야 어댑터 지시 말한다 열이지금 우리가 같이 smthin해야 꽤 명백 그래서

_id 이름 :

String[] queryCols=new String[]{"_id", "sampletext"}; 
String[] adapterCols=new String[]{"sampletext"}; 
int[] adapterRowViews=new int[]{android.R.id.text1}; 
mycursor=sdb.query(true,"mytable", queryCols,null,null,null,null,null,null); 
sca=new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mycursor, adapterCols, adapterRowViews,0); 
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spn.setAdapter(sca); 
+0

미안 해요, 난 오류를 해달라고하지만,이 .. 더 적절하게 문서를 확인해야 다른 논리적 인 문제. DISTINCT 쿼리를 사용할 때 _id는 기본 키이므로 커서의 모든 행으로 끝납니다. 어떤 제안? – Deepak

+0

죄송합니다. :) ... 새로운 플랫폼에 대한 지식을 얻는 데는 시간이 걸린다는 것을 이해합니다.이 답변이 도움이 되었기를 바랍니다 :) – Selvin

+0

잘 모르는 경우 어떻게 도와 드릴 수 있습니까? 'sdb.query'가하는 일은 ...'sdb'가'SQLiteDatabase'의 인스턴스가 아니라 자신의 헬퍼 클래스의 일종이라고 확신합니다. – Selvin

1

여기 원시 쿼리 예입니다. 쿼리에서 반환 한 첫 번째 ID 열은 _id으로 표시되어야합니다.

MyDatabase.java :

public class MyDatabase extends SQLiteAssetHelper { 
    ... 
    public Cursor getListNamesForDropDown() { 
     SQLiteDatabase db = getReadableDatabase(); 
     String sql = "select ID _id, Name from MyTable order by Name "; 
     Cursor c = db.rawQuery(sql, null); 
     c.moveToFirst(); 
     return c; 
    } 

MyActivity.java :

그 ABT
 @Override 
     public void onCreate(Bundle savedInstanceState) { 
....  
      Cursor cursorTest = db.getListNamesForDropDown(); 
      android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this, 
        android.R.layout.simple_spinner_item, 
        cursorTest, 
        new String[] {"Name"}, 
        new int[] {android.R.id.text1}, 0);  
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinnerTest.setAdapter(adapter); 
0
android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this, 
      android.R.layout.simple_spinner_item, 
      cursor, 
      new String[] { DBOpenHelper.ACCOUNT_BANK }, 
      new int[] { android.R.id.text1 }, 0); 

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);