Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Вывести из базы информацию в ListView

#java #android #sqlite #listview


Меняю вопрос в корне, как мне вывести данные в лист вью что бы каждое поле было отдельно?
вывожу вот таким способом, но информация вся хранится в одной строчке листВью.

    public class RequestHistoryListActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.history_database_request);
        DatabaseOpenHelper dbhelper = new DatabaseOpenHelper(getBaseContext());
        SQLiteDatabase sqliteDB = dbhelper.getReadableDatabase();
        String[] from = { HistoryColumns.REQUEST, BaseColumns._ID };
        final Cursor c = sqliteDB.query(History.TABLE_NAME, from, null, null, null,
null, null);
        int[] to = new int[] { R.id.text1 };
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(),
R.layout.list, c,
                from, to);
        ListView lv = (ListView) findViewById(R.id.listView1);
        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView parent, View view, int pos, long id) {

                // c.moveToPosition(pos);
                int rowId = c.getInt(c.getColumnIndexOrThrow(BaseColumns._ID));
                // Uri outURI = Uri.parse(data.toString() + rowId);
                /*
                 * Intent outData = new Intent(); History oneRow = new History();
                 * oneRow.setId(c.getLong(c.getColumnIndexOrThrow(BaseColumns._ID)));
                 * oneRow.setRequest(c.getString(c.getColumnIndexOrThrow(HistoryColumns.REQUEST)));
                 * setResult(Activity.RESULT_OK, outData); finish();
                 */
                Log.v(MainActivity.TAG, rowId);
            }
        });
    }
}


history_database_request.xml




    
    




и то во что выводим

lisr.xml



  
          
  


    


Ответы

Ответ 1



http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html Создавать примерно так Cursor cursor = getCursor() // любой метод возвращающий курсор SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, R.layout.[layout_name], // ваш лэйаут, можно взять стандартный из android.R new String[] { DBMetaData.FirstFieldName, DBMetaData.SecondFieldName }, // имена полей new int[] { R.id.tvFirstField, R.id.tvSecondField } // id текствьюх в выбранном лэйауте );

Ответ 2



if (cursor.moveToFirst()) { list = new ArrayList(); } передвигаешь курсор на начало - так делать не надо, лучше проверить курсов на нул... for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { заменить на while (cursor.moveToNext()) { Cursor cursor = sqliteDB.query(History.TABLE_NAME, new String[] { "count(*)" }, null, null, null, null, History.DEFAULT_SORT); if (cursor.moveToFirst()) { countRows = cursor.getInt(0); if (LOGV) { Log.v(TAG, "Count in history table" + String.valueOf(countRows)); } вообще все лишнее, Count можно проверить посмотрев размер курсора. oneRow.setRequest(cursor.getString(cursor.getColumnIndexOrThrow(HistoryColumns.REQUEST))); тут ты сеттеш поле HistoryColumns.REQUEST в oneRow объект потом надо сделать, чтото типа String str = oneRow.getRequest(); собрать все это в массив и передать в листАдаптер - все отобразится... то я не думаю, что это решит твою задачу

Комментариев нет:

Отправить комментарий