2014-07-06 2 views
0

sqlite에서 listview로 데이터를 쓰려고합니다. 컴파일러는 오류를 표시하지 않지만 휴대 전화에서 앱을 실행하면 충돌이 발생합니다. 나에게android - 목록보기를 만들려고합니다.

 Cursor resultSet = db.rawQuery("Select * from weight_listview ORDER BY `id` DESC",null); 
    resultSet.moveToFirst(); 


    String[] list = new String[] {}; 
    String[] weighttolist={}; 
    String[] datetolist={}; 
    ArrayList<String> List=new ArrayList<String>(); 
    ArrayList<String> List2=new ArrayList<String>(); 
    resultSet.moveToFirst(); 

    int x = 0; 
    while(resultSet.moveToNext()){ 
     String data = resultSet.getString(resultSet.getColumnIndex("weight")); 
     String data2 = resultSet.getString(resultSet.getColumnIndex("date")); 
     String id = resultSet.getString(resultSet.getColumnIndex("ID")); 
     List.add(data + " " + data2); 
     x++; 
    } 
    final ListView listView = (ListView) findViewById(R.id.listView1); 
    if(List != null){ 
     weighttolist=(String[])List.toArray(new String[0]); 


     String[] from = { "weight", "date" }; 
     int[] to = { R.id.weight, R.id.date }; 
     SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this,R.layout.row, resultSet, from, to); 
     listView.setAdapter(cursorAdapter); 

     // ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
     //   android.R.layout.simple_list_item_1, android.R.id.text1, weighttolist); 
     // ListView.setAdapter(adapter); 
     } 

편집을 도와주세요 :

나는 문제를 해결하기 위해 successed하지만 지금은 또 다른 문제가 있습니다. 나는 listview가 1뿐만 아니라 2 열을 보여주기를 바란다. 첫 번째 코드에서 볼 수 있듯이 fill.xml을 작성했습니다.

 Cursor resultSet = db.rawQuery("Select * from weight_listview ORDER BY `id` DESC",null); 
    resultSet.moveToFirst(); 

    String[] list = new String[] {}; 
    String[] weighttolist={}; 
    String[] datetolist={}; 
    ArrayList<String> List=new ArrayList<String>(); 
    ArrayList<String> List2=new ArrayList<String>(); 
    resultSet.moveToFirst(); 

    int x = 0; 
    while(resultSet.moveToNext()){ 
     String data = resultSet.getString(resultSet.getColumnIndex("weight")); 
     String data2 = resultSet.getString(resultSet.getColumnIndex("date")); 
     List.add(data + " " + data2); 
     x++; 
    } 

    final ListView listView = (ListView) findViewById(R.id.listView1); 
    if(List != null){ 
     weighttolist=(String[])List.toArray(new String[0]); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, android.R.id.text1, weighttolist); 
     listView.setAdapter(adapter); 


    } 
+0

먼저 시도, 원시 쿼리보다는 DB API를 사용하는 것이 좋습니다. 귀하의 질문에 대한, 응용 프로그램이 충돌하면 logcat에 오류가 있어야합니다. 그것을 찾으십시오. 어쩌면 당신이 얻고있는 커서가 null이고 널 커서로 불리는 모든 것이 어플 리케이션을 망가뜨릴 수 있습니다. – vandus

답변

0

정확한 오류없이 어떤 문제가 있는지 알기가 어렵습니다. 당신은 내가

믿을 해시 맵을 사용할 필요가 있으므로 여기에 내 생각은 변수에서 열쇠입니다, 당신은 당신이하지리스트를? 서를 사용하는 두 번째 매개 변수에이

SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 

처럼 생성자 보이는입니다 SimpleAdapter를 사용하는 것입니다 코드 밖으로

코멘트와 모든이

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

int x = 0; 
while(resultSet.moveToNext()){ 
    HashMap<String, String> map = new HashMap<String, String>(); 
    String weight = resultSet.getString(resultSet.getColumnIndex("weight")); 
    String date = resultSet.getString(resultSet.getColumnIndex("date")); 
    String id = resultSet.getString(resultSet.getColumnIndex("ID")); 
    map.put("weight", weight); 
    map.put("date", date); 
    List.add(map); 
    x++; 
} 
final ListView listView = (ListView) findViewById(R.id.listView1); 
if(List != null){ 
    weighttolist=(String[])List.toArray(new String[0]); 


    String[] from = { "weight", "date" }; 
    int[] to = { R.id.weight, R.id.date }; 
    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this,R.layout.row, List, from, to); 
    listView.setAdapter(cursorAdapter); 
+0

응용 프로그램이 여전히 충돌 – Alona

+0

이 좋아 컴파일러는 그 다음 중단 점을 설정하지 않는 경우에 충돌하고 봐 주시기 바랍니다 코드 불구하고 가서는 –

+0

에 충돌 어떤 라인 무엇을보고 라인을 말해야한다 : 내 주요 메시지를 편집, 나는 그 문제의 절반을 해결했다. 응용 프로그램이 실행되고 충돌하지 않지만 여전히 문제가 있습니다. 당신의 도움을 주셔서 감사합니다 !! – Alona

관련 문제