nitesh nitesh - 5 months ago 72
Android Question

how to refresh the listView using the Cursor Adapter

I have created a

ListView
using
CursorAdapter
. Now I am Trying to update the
ListView
and Refresh the value to the ListView .

But I am not able to figure out . How to work with
Loader
or
changeCursor()
to refresh my
ListView


Below is My code of setting the
CursorAdapter
:

//SucessFully done here

SQLDataSore datastore = new SQLDataSore(PrintContent.this);

Cursor cursor = datastore.getJSONData();

final CursorDemo cursorDemo = new CursorDemo(PrintContent.this, cursor);

list_View.setAdapter(cursorDemo);


My
Button
onClick
I am updating the Value into the Database
//SucessFully Done

btn_check.setOnClickListener( new OnClickListener() {

@Override
public void onClick(View view ) {

String editTextValue = edit_check.getText().toString();

if (editTextValue!=null) {


SQLDataSore sqlDataSore = new SQLDataSore(PrintContent.this);

Cursor cursor_update = sqlDataSore.updateData(editTextValue);

//Here How Should I update my ListView ...?
}

}


My UpdateData Method:

public Cursor updateData(String editContent){

SQLiteDatabase updateContent = getReadableDatabase();


Cursor cursor_update = updateContent.rawQuery( "update " +TABLE_NAME + " set content = '"+ editContent
+"' "+" where _id = 357", null);

return cursor_update;
}


CursorDemo Class

public class CursorDemo extends CursorAdapter{

public CursorDemo(Context context, Cursor c) {

super(context, c , false);
// TODO Auto-generated constructor stub
}

@Override
public void changeCursor(Cursor cursor) {
// TODO Auto-generated method stub
super.changeCursor(cursor);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
// TODO Auto-generated method stub

TextView txt_content = (TextView) view.findViewById(R.id.txt_content);
TextView txt_likes_count = (TextView) view.findViewById(R.id.txt_likescount);
TextView txt_name = (TextView) view.findViewById(R.id.txt_name);
TextView txt_display_name = (TextView) view.findViewById(R.id.txt_display_name);

txt_content.setText(cursor.getString(cursor.getColumnIndex("content")));

}

@Override
public View newView(Context context , Cursor cursor, ViewGroup viewGroup) {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.message_row_view, viewGroup ,false);

return view;
}

}


Any Help is Appreciated...
});

Answer

If CursorDemo extends CursorAdapter, then you have to use adapter.swapCursor(cursor_update);

That should swap the old cursor out for the new one and reload the data. With swapCursor, the old cursor is not closed.

Comments