Question

I possède une liste image personnalisée dans laquelle une textview et une case cochée est dans chaque rangée. Lorsque je clique sur le ckeckbox, je veux ajouter la valeur de TextView à base de données et d'afficher un message Toast dans la vue. L'insertion de base de données fonctionne bien. Mais l'application est l'arrêt suddently, et le message Toast ne figure pas dans la vue.

 public class Favourites extends Activity 
 {
     @Override
     public void onCreate(Bundle savedInstanceState)
     {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_list);
        ListView listitems = (ListView) findViewById(R.id.ListView_01);
        listitems.setAdapter(new EfficientAdapter(this));
     }
     private static class EfficientAdapter extends BaseAdapter
     {
        //imp
        public View getView(int position,  View convertView, ViewGroup parent) 
        {

              if (convertView == null)
              {
                  int itemId=SubListIdList.get(position);
                  TextView text = (TextView) convertView.findViewById(R.id.TextView_02);
                  CheckBox star = (CheckBox) convertView.findViewById(R.id.star);
                  star.setOnCheckedChangeListener(new OnCheckedChangeListener() 

                  {

                       @Override
                       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
                       {
                           Favourites f=new Favourites();
                           query="UPDATE "+SUB_TABLE_NAME+" SET FavoriteIndicator='Y' WHERE SubListID="+itemId;
                           db.execSQL(query);   
                           Toast.makeText(f, "Insertion successfull!", 1).show();
                       }
                 }
           }
       }
    }
}

S'il vous plaît aidez-moi .... Merci ...

Était-ce utile?

La solution

Donner la notification Toast contexte de votre principal activitiy pour l'afficher. Je ne suis pas tout à fait sûr pourquoi vous instanciation votre activité à nouveau dans la méthode onCheckedChanged() mais je suppose que vous essayez de passer votre Toast un contexte avec cela. Essayez cette façon.

Context ctx = null;

onCreate(Bundle bundle) {
    super.onCreate(bundle);
    // more stuff
    ctx = getApplication();

    // even more stuff
    @Override
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        query="UPDATE "+SUB_TABLE_NAME+" SET FavoriteIndicator='Y' WHERE" +
        " SubListID="+itemId;
        db.execSQL(query);   
        Toast.makeText(ctx, "Insertion successfull!", 4000).show();
    }
}

Et s'il vous plaît ne réglez pas votre temps d'affichage Toast à une milliseconde qui ne vous aidera pas. Les paramètres de temps est défini en millisecondes.

Autres conseils

Vous pouvez directement des toasts comme ça,

Toast.makeText(Favourites.this, "Toast!", Toast.LENGTH_SHORT).show();

J'ai une question sur votre code .... si convertview != null est-il une hypothèse pour laquelle vous sautez cette vérification?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top