Изменение данных SimpleCursorAdapter - PullRequest
1 голос
/ 16 марта 2012

Я расширил SimpleCursorAdapter в соответствии со своими потребностями.Я хочу показать два текстовых представления подряд.

Одно из этих текстовых представлений заполнено курсором, но для другого я хочу использовать ArrayList.Позвольте мне привести пример, чтобы уточнить:

Для первого поля я использую данные из курсора

String[] columns = new String[] { ContactsContract.PhoneLookup.DISPLAY_NAME };
int[] to = new int[] { R.id.toptext };

Я хочу использовать ArrayList для второгополе, чтобы они сформировали следующий список

Я не знаю, как я могу установить второе поле.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 17 марта 2012

Я не проверял его, но вы можете использовать столбец _id вашего запроса, чтобы отобразить ваши значения в список, а затем связать данные.

private HashMap<Long, String> items = new HashMap<Long, String>(); // this will map the ids from the cursor to the values in the ArrayList
//get the cursor Cursor cursor = the query and then map the values:
int tmp = 0;
while (mc.moveToNext()) {
    items.put(mc.getLong(mc.getColumnIndex("_id")), extra.get(tmp)); //or replace _id with your ID column from the query
    tmp++;
}   

Затем передайте это HashMap вашему конструктору адаптера:

    private HashMap<Long, String> extraStuff; 

    public YourCursorAdapter(Context context, int layout, Cursor c,
                    String[] from, int[] to, HashMap<Long, String> extraSutff) {
       // stuff
       this.extraStuff = extraStuff;
}

и связать значения в методе bindView():

@Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView top = (TextView) view.findViewById(R.id.toptext);
    top.setText(cursor.getString(cursor.getColumnIndex(THE_COLUMN_FOR_THE_FIRST_TEXTVIEW)));
    TextView bottom = (TextView) view.findViewById(R.id.bottomtext);
    bottom.setText(extraStuff.get(cursor.getLong(cursor.getColumnIndex(THE_ID_COLUMN_FROM_THE_QUERY))));
}

Примечание: я не знаю, насколько это будет эффективно, если в курсоре много строк.

...