2012-02-06 7 views
0

Я довольно новичок в разработке приложений для Android, и я пытаюсь найти строки из SQLite db для отображения в Listactivity, но это не работает, и программа неожиданно завершается. Вот код:Заполнение списка с использованием базы данных SQLite

package ankur.test.app; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class testMenu extends ListActivity{ 

    HotOrNot Infor = new HotOrNot(this); 
    { 
     Infor.open(); 
    } 
    String[] result = Infor.getList(); 
    { 
     Infor.close(); 
    } 


    @Override 
    protected void onCreate(Bundle ankurtestlist) { 
     // TODO Auto-generated method stub 
     super.onCreate(ankurtestlist); 
     setListAdapter(new ArrayAdapter<String>(testMenu.this, android.R.layout.simple_list_item_2, result)); 

    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 
     Object cheese = result[position]; 
    /* try{ 
     Class ourClass = Class.forName("ankur.test.app."+ cheese); 
     Intent ourIntent = new Intent(testMenu.this, ourClass); 
     startActivity(ourIntent); 
     }catch(ClassNotFoundException e){ 
      e.printStackTrace(); 
     }*/ 
    } 
} 

и этот метод в другом классе:

public String[] getList() { 
     // TODO Auto-generated method stub 
     String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_HOTNESS}; 
     Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 
     ArrayList name = new ArrayList(); 
     int i = 0; 

     int iName = c.getColumnIndex(KEY_NAME); 

     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
      name.add(c.getString(iName)); 
      i++; 
     } 

     String[] result = (String[]) name.toArray(); 
     return result; 
    } 

Любая помощь будет оценена.

ответ

1

Кажется, у вас возникли проблемы контекста, просто поместите вашим инициализировать новый Infor = HotOrNot(this); внутри onCreate() и редактировать код как,

String[] result; 
HotOrNot Infor; 

@Override 
    protected void onCreate(Bundle ankurtestlist) { 
     super.onCreate(ankurtestlist);\ 

     Infor = new HotOrNot(this); 
     Infor.open(); 
     result = Infor.getList(); 
     Infor.close(); 
     setListAdapter(new ArrayAdapter<String>(testMenu.this, android.R.layout.simple_list_item_2, result)); 
    } 
+0

Спасибо вам ответить, но когда я удалить инициализацию заявления от первоначального места и поместите его внутри onCreate(), onListItemClick() не сможет его прочитать и, таким образом, дает ошибку. Если я оставлю инструкции инициализации как в исходном, так и в onCreate(), я получаю ту же ошибку. – ankur3000

+1

Ну просто объявите их глобальными, а затем инициализируйте в 'onCreate()', я отредактировал свой ответ. –

Смежные вопросы