#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(); собрать все это в массив и передать в листАдаптер - все отобразится... то я не думаю, что это решит твою задачу
Комментариев нет:
Отправить комментарий