2014-12-10 4 views
-1

Я просматривал множество учебников, и я все еще не могу найти то, что ищу. Мне нужно иметь информацию, которая хранится в моей базе данных SQLite, показанной в ListView. У меня есть база данных, и я знаю, что она имеет в ней правильную информацию, однако, когда я смотрю на страницу с моим ListView, ничего не существует. Приложение не сбой и ошибок нет, оно просто пустое. Для справки, ListView материал находится в первую очередь кода, а Курсор для базы данных находится в нижней части второй части кода. Кроме того, обратите внимание, что я довольно новичок в Android, и я мог бы пропустить что-то очень простое.Заполнение ListView из базы данных Sqlite

Не стесняйтесь задавать любые вопросы и благодарить за любые ответы!

Вот некоторые фрагменты моего кода:

public class Main_Screen extends Activity implements OnClickListener { 

Button Test; 
Button New; 
ListView PassEntries; 
DBHelper myDb; 

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

    Test = (Button) findViewById(R.id.buttonTEST); 
    // This button is meant to refresh the ListView 
    New = (Button) findViewById(R.id.button10); 
    // This button takes the user to a new screen where they input the data into the Database 
    PassEntries = (ListView) findViewById(R.id.listView1); 

    openDB(); 
    populatePassEntriesFromDB(); 

    Test.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      populatePassEntriesFromDB(); 
     } 
    }); 

    New.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      myDb.close(); 
      Intent NewPass = new Intent(getApplicationContext(), NewPass.class); 
      startActivity(NewPass); 
     } 
    }); 

} 

private void populatePassEntriesFromDB() { 
    // TODO Auto-generated method stub 
    Cursor CR = myDb.getAllRows(); 

    String[] fromFieldNames = new String[] 
      {DBinfo.ACC_NAME}; 
    int[] toViewIDs = new int[] 
      {R.id.nameView}; 

    ListAdapter Adapter = new SimpleCursorAdapter(
        this, 
        R.layout.list_view_display, 
        CR, 
        fromFieldNames, 
        toViewIDs 
        ); 

    setListAdapter(Adapter); 
} 

private void setListAdapter(ListAdapter adapter) { 
    // TODO Auto-generated method stub 

} 

private void openDB() { 
    // TODO Auto-generated method stub 
    myDb = new DBHelper(); 
    myDb.open(); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

} 
} 

И мои базы данных классов -

public class DatabaseOperations extends SQLiteOpenHelper { 
public static final int database_version = 1; 
public String CREATE_QUERY = "CREATE TABLE table_info (" + 
       "acc_name TEXT, "+ 
       "acc_pass TEXT, "+ 
       "acc_notes TEXT)"; 

public DatabaseOperations(Context context) { 
    super(context, DBinfo.DATABASE_NAME, null, database_version); 
    // TODO Auto-generated constructor stub 
    Log.d("Database operations", "Database created"); 
} 

@Override 
public void onCreate(SQLiteDatabase sdb) { 
    // TODO Auto-generated method stub 
    sdb.execSQL(CREATE_QUERY); 
    Log.d("Database operations", "Table created"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 

} 

public void putInformation(DatabaseOperations dop, String acc_name, String acc_pass, String acc_notes) 

{ 
SQLiteDatabase SQ = dop.getWritableDatabase(); 
ContentValues cv = new ContentValues(); 
cv.put(DBinfo.ACC_NAME, acc_name); 
cv.put(DBinfo.ACC_PASS, acc_pass); 
cv.put(DBinfo.ACC_NOTES, acc_notes); 
// cv.put(DBinfo.ACC_TYPE, type); 
long k = SQ.insert(DBinfo.TABLE_NAME, null, cv); 
Log.d("Database operations", "One raw inserted"); 

} 

public Cursor getInformation(DatabaseOperations dop) 
{ 
    SQLiteDatabase SQ = dop.getReadableDatabase(); 
    String[] coloumns = {DBinfo.ACC_NAME,DBinfo.ACC_PASS,DBinfo.ACC_NOTES}; 
    Cursor CR = SQ.query(DBinfo.TABLE_NAME, coloumns, null, null, null, null, null); 
    return CR; 
} 
} 

-

public class DBHelper { 

public DBHelper() 
{ 

} 

public static abstract class DBinfo implements BaseColumns 
{ 
    public static final String ACC_NAME = "acc_name" ; 
    public static final String ACC_PASS = "acc_pass" ; 
    public static final String ACC_NOTES = "acc_notes" ; 
    public static final String DATABASE_NAME = "acc_info" ; 
    public static final String TABLE_NAME = "table_info" ; 
} 

public void open() { 
    // TODO Auto-generated method stub 

} 

public Cursor getAllRows() { 
    // TODO Auto-generated method stub 
    return null; 
} 

public void close() { 
    // TODO Auto-generated method stub 

} 
} 

ответ

0

PassEntries.setAdapter - вы не вызывать этот метод, так что вы 'Не устанавливайте адаптер на ваш ListView. setListAdapter Метод реализации пуст в вашем коде. Удалите пустой метод setListAdapter и вызовите PassEntries.setAdapter вместо него. Следующая вещь: метод DBHelper.getAllRows возвращает только нулевой код, но он должен вернуть результат запроса в вашей базе данных как объект Cursor.

+0

После изменения его я получаю эти ошибки из Eclipse: ошибка синтаксиса, вставить «VariableDeclarators», чтобы завершить \t LocalVariableDeclaration \t - PassEntries не может быть разрешена к типу – JayBoe

+0

я поставил его так и до сих пор получил ошибку, однако когда я изменил его на 'PassEntries.setAdapter (Adapter)', он не дал никаких ошибок. Неужели это работает для того, что мы пытаемся сделать? – JayBoe

+0

Хорошо, а на _Cursor_, каков должен быть тип возврата? – JayBoe

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