Pergunta

How to change text of items in ListView when it is displayed using SimpleCursorAdaptor? Here is my code.

Cursor allTaskcursor = databaseHelper.getAllTasks();
String[] from = {"name", "date"};
int[] to = new int[] {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(context, android.R.layout.simple_list_item_2, allTaskcursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
allTaskListView.setAdapter(cursorAdapter);

getAllTasks() returns a cursor where date is an Integer value (example 10) which is displayed in android.R.id.text2. I want to change that text (example "10 days").

Foi útil?

Solução 2

SimpleCursorAdapter.ViewBinder did the job. As answered here, I changed the code to..

Cursor allTaskcursor = databaseHelper.getAllTasks();
    String[] from = {"name", "date"};
    int[] to = new int[] {android.R.id.text1, android.R.id.text2};
    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(context, android.R.layout.simple_list_item_2, allTaskcursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
    cursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
            if (view.getId() == android.R.id.text2) {
                int getIndex = cursor.getColumnIndex("date");
                int date = cursor.getInt(getIndex);
                TextView dateTextView = (TextView) view;
                dateTextView.setText(date + " days");
                return true;
            }
            return false;
        }
    });
    allTaskListView.setAdapter(cursorAdapter);

Outras dicas

If you want to update single list item and you know the index of item, you can call getChildAt(int) on the ListView to get the view and update it like -

TextView text2 = (TextView) v.findViewById(R.id.text2);
text2.setText("Updated Text");

Or If, you want to update all values in array, you can update the array and call notifyDataSetChanged on adapter to reflect the updated values.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top