2011-12-03 8 views
0

내 데이터베이스에서 데이터를 가져와 내 데이터베이스의 두 클래스를 사용하여 listView.im에 표시하려고합니다. 첫 번째 클래스는 DBAdapter이고 데이터를 가져 오는 데 사용하는 방법은 다음과 같습니다.listView의 데이터베이스 결과가 작동하지 않습니다

public String[] getData() 
{ 
// String[] columns =new String[]{DBHelper.ROWID, DBHelper.TITLE , DBHelper.AUTHOR, DBHelper.ISBN }; 

    String[] columns =new String[]{DBHelper.TITLE , DBHelper.AUTHOR, DBHelper.ISBN }; 
    Cursor c=ourDatabase.query(DBHelper.DATABASE_TABLE, columns, null, null, null, null, null); 
    String result=""; 
    String sa = null; 
    String sb = null; 
    String sc = null; 


    //int iRow=c.getColumnIndex(DBHelper.ROWID); 
    int is1=c.getColumnIndex(DBHelper.TITLE); 
     int is2=c.getColumnIndex(DBHelper.AUTHOR); 
      int is3=c.getColumnIndex(DBHelper.ISBN); 

      for (c.moveToFirst();!c.isAfterLast();c.moveToNext()){ 
       //result=result+c.getString(is1)+" "+c.getString(is2)+" "+c.getString(is3)+"\n"; 
       sa=c.getString(is1); 
       sb=c.getString(is2); 
       sc=c.getString(is3); 
      } 
       //Toast.makeText(HotOrNot.this, sa, Toast.LENGTH_SHORT).show(); 

return new String[] {sa,sb,sc}; 
} 

2. SQLView에서 secind 클래스와 내가 일을하기 위해 무엇을해야

public class SQLView extends Activity { 
    /** Called when the activity is first created. */  

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

     HotOrNot entry2=new HotOrNot(this); 
     entry2.open(); 
      String[] data2=entry2.getData(); 
      entry2.close(); 
      Toast.makeText(SQLView.this, data2[1].toString(), Toast.LENGTH_SHORT).show(); 


     ListView list = (ListView) findViewById(R.id.list); 


     ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 


     HashMap<String, String> map = new HashMap<String, String>(); 

     map = new HashMap<String, String>(); 
     map.put("name",data2[0].toString()); 
     map.put("address", data2[1].toString()); 
     map.put("address2", data2[2].toString()); 

     mylist.add(map); 






     // ... 
     ListAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.row, 
        data2, new int[] {R.id.rtextView1,R.id.rtextView2,R.id.rtextView3}); 
     list.setAdapter(mSchedule); 

은? 이것은에서 데이터베이스를 사용하는 내 첫 번째 시도 내 목록을 만들려고 방식 메신저 이잖아 기계적 인조 인간!

지금은 그냥 빈 배경을 얻을

...

편집 : 내가

을 dB로 추가 위치 1의 마지막 항목을 받고 내 토스트 메신저와

사람은 return 문에서 좀 도와 수 제 DBHelper주세요.

+0

을 대신 Activity''의 기지로'ListActivity'를 사용합니다. – havexz

+0

좋아, 바꿨어! 호기심 때문에 목록에 활동을 사용하는 것이 잘못된 것일까? 목록 위에있는 이미지를 사용할 수 있습니다. 그런 식으로 활동 만 사용해야했습니다. 맞습니까? –

+0

'ListActivity'에도 이미지를 넣을 수 있습니다. 뷰 계층 구조에서'ListView'를 가져야한다는 점을 제외하고는 아무런 제약이 없습니다. 아이템 등을 클릭하는 등의 유스 케이스를 잡아내는 데 필요한 도우미가 있습니다. 그것은 당신의 삶을 편하게 만듭니다. – havexz

답변

1

아래는 고정 코드입니다. 이것을 시험해보십시오.

ListAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.row, 
    new String[] { "name", "address", "address2"}, 
    new int[] {R.id.rtextView1,R.id.rtextView2,R.id.rtextView3}); 
list.setAdapter(mSchedule); 

기본적으로 추가 한지도의 열/키를 지정해야합니다. 그러면지도에서 키를 해당보기로 매핑합니다.

이 문제를 루핑 들어,이 일을 할 것입니다 :

for(int i=0; i<data2.length; i+=3) { 
    HashMap<String, String> map; 

    map = new HashMap<String, String>(); 
    map.put("name",data2[i].toString()); 
    map.put("address", data2[i+1].toString()); 
    map.put("address2", data2[i+2].toString()); 

    mylist.add(map); 
} 

getData 수정 : 우선 들어

ArrayList<String> arrForData = new ArrayList<String>(); 
//int iRow=c.getColumnIndex(DBHelper.ROWID); 
int is1=c.getColumnIndex(DBHelper.TITLE); 
    int is2=c.getColumnIndex(DBHelper.AUTHOR); 
     int is3=c.getColumnIndex(DBHelper.ISBN); 

     for (c.moveToFirst();!c.isAfterLast();c.moveToNext()){ 
      //result=result+c.getString(is1)+" "+c.getString(is2)+" "+c.getString(is3)+"\n"; 
      arrForData.add(c.getString(is1)); 
      arrForData.add(c.getString(is2)); 
      arrForData.add(c.getString(is3)); 
     } 
      //Toast.makeText(HotOrNot.this, sa, Toast.LENGTH_SHORT).show(); 

return arrForData.toArray(); 
+0

감사합니다 havexz !! 이제 목록이 작동하지만 내 데이터베이스에 추가 한 마지막 항목 만 볼 수 있습니다! 어떻게 해결할 수 있습니까? –

+0

이 경우에는 마지막 항목에 해당하는 ... mylist.add (map);를 한 번만 호출하면됩니다. 모든 데이터가 들어있는'data2' 변수를 반복해야합니다. – havexz

+0

제발 좀 도와 주실 수 있을까요? 같이 사용할 수 있을까요? –

관련 문제