Сообщение тоста на пользовательском ListView Нажмите на Android

StackOverflow https://stackoverflow.com/questions/4163503

  •  08-10-2019
  •  | 
  •  

Вопрос

У меня есть пользовательский список, в котором один текстовый просмотр и один проверенный флажок находится в каждой строке. Когда я нажимаю на CKeckbox, я хочу добавить значение из TextView в базу данных и отобразить сообщение 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();
                       }
                 }
           }
       }
    }
}

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

Это было полезно?

Решение

Дай 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 Отображение времени до одной миллисекунды, который не поможет вам. Параметры времени устанавливаются в миллисекунды.

Другие советы

Вы можете напрямую тосты, как это,

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top