comment faire pour actualiser la liste à l'aide du Curseur de l'Adaptateur
J'ai créé un ListView
à l'aide de CursorAdapter
. Maintenant, je suis en train de mettre à jour le ListView
et d'Actualisation de la valeur à la ListView .
Mais je ne suis pas en mesure de comprendre . Comment travailler avec Loader
ou changeCursor()
pour actualiser mon ListView
Ci-dessous Mon code de réglage de la CursorAdapter
:
//Relevé ici
SQLDataSore datastore = new SQLDataSore(PrintContent.this);
Cursor cursor = datastore.getJSONData();
final CursorDemo cursorDemo = new CursorDemo(PrintContent.this, cursor);
list_View.setAdapter(cursorDemo);
Mon Button
onClick
je mets à jour la Valeur dans la Base de données
//Relevé
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 ...?
}
}
Mon UpdateData Méthode:
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 Classe
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;
}
}
Toute Aide est Appréciée...
});
- appel
adapter.notifyDataSetChanged()
adapter.notifyDataSetChanged()
travaillé uniquement lorsque l'adaptateur valeur a changé de nouveaux à valeur ajoutée ou retirée précédemment.Dans votre cas, votre curseur de valeur est mise à jour, mais l'adaptateur n'est pas modifié sa valeur.
InformationsquelleAutor nitesh | 2013-12-19
Vous devez vous connecter pour publier un commentaire.
Si CursorDemo s'étend CursorAdapter, alors vous devez utiliser
adapter.swapCursor(cursor_update);
Qui devraient échanger l'ancien curseur pour le nouveau et recharger les données. Avec
swapCursor
, l'ancien curseur n'est pas fermé.Dans votre
CursorDemo
vous avez à owerwritechangeCursor()
méthode et de réinitialiser leCursor
si vous avez de l'indexeur vous devrez fixer le curseur de trop.Aussi essayer pour la méthode ci-dessous si c'est approprié pour votre condition.
Mis cela sur l'activité où déclarer la ListView . Il suffit de créer une nouvelle carte et la mettre dans le nouveau curseur, puis de le recréer ou échanger le curseur. assurez-vous que votre listview ou un adaptateur de pas constant.
on pourrait appeler
super.onCreate(null);
".java.lang.IllegalArgumentException: la colonne " _id "n'existe pas ...althouh j'ai _id champ dans ma table db" signifie que la valeur de "curseur" dans votre code n'est pas correct.
Vérifiez le code de l'obtention de la valeur de "curseur" s'il vous plaît. Un curseur doit avoir une colonne nommée "_id'。
C'est ma suggestion