문제

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").

도움이 되었습니까?

해결책 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);

다른 팁

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top