Сообщение о тосте в CustomView View Click в Android - PullRequest
1 голос
/ 12 ноября 2010

У меня есть собственное представление списка, в котором по одному текстовому обзору и одному флажку в каждой строкеКогда я нажимаю кнопку ckeckbox, я хочу добавить значение из TextView в базу данных и отобразить сообщение Toast в представлении.Вставка базы данных работает нормально.Но приложение неожиданно останавливается, и сообщение Toast не отображается в представлении.

 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();
                       }
                 }
           }
       }
    }
}

Пожалуйста, помогите мне .... Спасибо ...

Ответы [ 3 ]

1 голос
/ 12 ноября 2010

Вы можете прямо так выпить,

<code>Toast.makeText(Favourites.this, "Toast!", Toast.LENGTH_SHORT).show();
0 голосов
/ 12 ноября 2010

У меня вопрос по поводу вашего кода .... что если convertview != null Есть ли предположение, почему вы пропустите эту проверку?

0 голосов
/ 12 ноября 2010

Дайте Toast уведомление вашей основной деятельности, чтобы отобразить его.Я не совсем уверен, почему вы снова создаете экземпляр своей активности в методе onCheckedChanged(), но я думаю, вы пытались передать свой Toast контекст с этим.Попробуйте это так.

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();
    }
}

И, пожалуйста, не устанавливайте Toast время отображения в одну миллисекунду, которое вам не поможет.Параметры времени задаются в миллисекундах.

...