2010-04-24 8 views
2

Je souhaite actualiser les éléments Listview. Ces éléments sont renseignés à partir de la base de données SQLite. Mon code est ci-dessousAndroid ListView avec SQLite

public class Weeve extends Activity { 
     private String[] lv_arr; 
    protected ListView CView; 
    private DBAdapter mDbHelper; 

onCreate public void (Bundle savedInstanceState) {

super.onCreate(savedInstanceState); 

    mDbHelper = new DBAdapter(this); 
    mDbHelper.open(); 

    Cursor c = mDbHelper.getAll(); 
    if (c.getCount() > 0) 
    {if (c.moveToFirst()) 
    { 
     ArrayList strings = new ArrayList(); 
     do {      
      String mC = c.getString(0); 
      strings.add(mC); 

     } while (c.moveToNext()); 
     lv_arr = (String[]) strings.toArray(new String[strings.size()]); 
    } 
    } 
    else Toast.makeText(this, 
      "No more Records", 
      Toast.LENGTH_SHORT).show(); 
    c.close(); 

    ListView CView = new ListView(this); 
    CView.setAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, lv_arr));  
    setContentView(CView);}} 

Je voudrais faire rafraîchir ce point de vue de la liste après l'ajout, la mise à jour ou la suppression de la table SQLite. Ces opérations sont appelées par le contenu ou le menu d'options. J'ai essayé de créer ce code dans une fonction séparée et l'appeler après chaque opération. Mais ne peut pas. Je pense à l'instruction setContentView (CView).

J'ai également essayé d'utiliser SimpleCursorAdapter comme exemple de bloc-notes sur Android.com. J'ai une erreur de thread. Aidez moi.

Répondre

2

Vous pouvez le faire en utilisant Adapter.notifyDataSetChanged().

Cependant, je trouve votre code légèrement désactivé. Vous récupérez des lignes de la base de données à l'aide d'un curseur, juste pour créer un nouvel ArrayAdapter pour les valeurs de ligne. Pourquoi ne pas utiliser un CursorAdapter pour sauvegarder votre liste? C'est ce que ça veut dire.

+0

puis-je obtenir un exemple de code SimpleCursorAdapter pour mon activité? – soclose

0

assurez-vous que toutes vos activités sont dans le manifeste

+0

Si nous utilisons SimpleCursorAdapter, nous devons ajouter la colonne de clé primaire '_id'. J'ai eu l'erreur est causée de ce nom de colonne '_id'. – soclose