Каков наилучший способ перечислить все строки в Sqlite Android? - PullRequest
2 голосов
/ 30 ноября 2011

В настоящее время я использую следующий код для передачи всех элементов в некоторых столбцах в Arrayadapter.

private void TestListAll(){
        //Displays the whole list.
        cursor = db.rawQuery("SELECT _id, firstName, lastName, title FROM employee WHERE firstName || ' ' || lastName LIKE ?", 
                  new String[]{"%" + "" + "%"});
        adapter = new SimpleCursorAdapter(
                this, 
                R.layout.emp_list_item, 
                cursor, 
                new String[] {"firstName", "lastName", "title"}, 
                new int[] {R.id.firstName, R.id.lastName, R.id.title});
        setListAdapter(adapter);
    }

Есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

в моем приложении я использую что-то вроде этого:

    public ArrayList<HashMap<String, ?>> selectLastPlayed() {
    ArrayList<HashMap<String, ?>> list = new ArrayList<HashMap<String, ?>>();
    Cursor cursor = this.db.query("employee Order BY ID DESC",
            new String[] { "*" }, null, null, null, null, null);
    if (cursor.moveToFirst()) {
        do {
            HashMap<String, Object> temp = new HashMap<String, Object>();
            temp.put("Icon", cursor.getString(1));
            temp.put("Title", cursor.getString(2));
            list.add(temp);
        } while (cursor.moveToNext());
    }
    if (cursor != null && !cursor.isClosed()) {
        cursor.close();
    }
    return list;
}

и затем вы можете поместить arraylist в адаптер;) как это:

SimpleAdapter adapter = new MySimpleAdapter(this, selectLastSearch(), R.layout.custom_row_view, new String[] { "Icon", "Icon" }, new int[] { R.id.textView1123, R.id.imageView12 });

это мой простой адаптер:

    public class MySimpleAdapter extends SimpleAdapter {
    Context localcontext = null;
    public MySimpleAdapter(Context context,List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
        localcontext = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        return view;
    }
}
0 голосов
/ 30 ноября 2011

Да, есть более простой способ.Вместо того, чтобы писать что-то sql select вручную, пусть Android сделает это с курсором в вашем классе помощника базы данных.При этом все элементы в вашей таблице выбираются без аргументов выбора.

public Cursor getAllItems() {
    return this.sqliteDBInstance.query(EMPLOYEE_TABLE, null, null, null, null, null, null);
}

И тогда в своей деятельности вы показываете только имя, фамилию и заголовок, даже если _id было выбрано в методе курсора getAllItems.Я предполагаю, что вы не хотите показывать это в списке.

Private Cursor cursor;
...
cursor = db.getAllItems();
    startManagingCursor(cursor);
ListAdapter adapter = new SimpleCursorAdapter(MyActivity.this,
            R.layout.emp_list_item, cursor, new String[] { "firstName", "lastName", "title" }, new int[] { R.id.firstName, R.id.lastName, R.id.title });
setAdapter(adapter);
...