Сообщение тоста на пользовательском ListView Нажмите на Android
Вопрос
У меня есть пользовательский список, в котором один текстовый просмотр и один проверенный флажок находится в каждой строке. Когда я нажимаю на 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
Есть ли предположение, почему вы пропустите этот чек?