当我单击警报对话框中列出的项目时,Android Toast 没有出现
Posted
技术标签:
【中文标题】当我单击警报对话框中列出的项目时,Android Toast 没有出现【英文标题】:Android Toast doesn't appear when I click on items listed in the Alert Dialog 【发布时间】:2021-03-29 08:10:21 【问题描述】:当我单击 AlertDialog 中列出的项目时,我希望 Clicked Item 与 Toast 一起出现。但无论我做什么,它都没有发生。 点击项目时没有任何反应。谢谢 这是主文件。我正在从数据库中获取数据。 MainActivity.class
public class MainActivity extends AppCompatActivity implements View.OnClickListener
List<NuriClass> nurList;
public void favori_listele_class (String getir_kategori)
SQLiteDatabase db = veritabanim.getReadableDatabase();
String[] getColumnName="_id,kategori,bilmece,cevap,favori";
String[] arananDegerler="1",getir_kategori;
Cursor imlec=db.query("bilmecebulmaca_tablosu", getColumnName, "favori=? And kategori=?",arananDegerler , null, null, null);
//Cursor imlec=db.query("bilmecebulmaca_tablosu", getColumnName, "kategori=?",arananDegerler1 , null, null, null);
final ArrayList<Integer> favori_listesi_id = new ArrayList<Integer>();
final ArrayList<String> favori_listesi = new ArrayList<String>();
nurList = new ArrayList<>();
while(imlec.moveToNext())
int dizi_id=imlec.getInt(imlec.getColumnIndex("_id"));
String dizi_bilmece=imlec.getString(imlec.getColumnIndex("bilmece"));
String dizi_cevap=imlec.getString(imlec.getColumnIndex("cevap"));
int dizi_favori=imlec.getInt(imlec.getColumnIndex("favori"));
String dizi_soru= dizi_bilmece+ " "+dizi_cevap+ " "+dizi_favori;
favori_listesi.add(dizi_soru);
favori_listesi_id.add(dizi_id);
nurList.add(new NuriClass(dizi_id, getir_kategori, dizi_bilmece, dizi_cevap,dizi_favori,R.mipmap.ic_launcher));
ListeGoster((ArrayList<NuriClass>) nurList);
我称底部为 ListeGoster 在顶部。 我从这里的数据库中获取数据
private void ListeGoster(final ArrayList<NuriClass> ssss)
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this,R.style.AlertDialogCustom);
LayoutInflater inflater = getLayoutInflater();
final View convertView = inflater.inflate(R.layout.nuri_list, null);
alertDialog.setView(convertView);
alertDialog.setTitle("FAVORİLER");
alertDialog.setIcon(R.drawable.uygulama_8);
alertDialog.setCancelable(true); //Tıkladığında PENCERE KAPANSIN MI?
final ListView listViewNur = convertView.findViewById(R.id.listViewNuri);
final NuriAdaptor adapter = new NuriAdaptor(this, R.layout.nuri_modelim, ssss);
if (listViewNur != null)
listViewNur.setAdapter(adapter);
alertDialog.setPositiveButton("KAPAT", null);
alertDialog.setPositiveButtonIcon(getResources().getDrawable(android.R.drawable.ic_delete, getTheme()));
listViewNur.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
Toast.makeText(getApplicationContext(), "The program does not show this toast when clicking on items. it never gets to this point.", Toast.LENGTH_SHORT).show();
);
alertDialog.show();
Nuriadaptor.java
public class NuriAdaptor extends ArrayAdapter<NuriClass>
List<NuriClass> nuriList; //KisilerCLASS türü Listedeki liste değerleri
Context context;
int resource; //liste öğeleri için düzen kaynak dosyası, the layout resource file for the list items
//yapıcı değerleri başlatıyor, constructor initializing the values
public NuriAdaptor(Context context, int resource, List<NuriClass> nuriList)
super(context, resource, nuriList);
this.context = context;
this.resource = resource;
this.nuriList = nuriList;
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent)
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(resource, null, false); //getting the view
ImageView imageView = view.findViewById(R.id.imageView);
TextView textKategori = view.findViewById(R.id.textViewKategori);
TextView textSoru = view.findViewById(R.id.textViewSoru);
FloatingActionButton favSil = view.findViewById(R.id.floating_sil_FAV);
NuriClass nuri = nuriList.get(position);
textKategori.setText(nuri.getKategori());
textSoru.setText(nuri.getSoru());
//öğeyi listeden kaldırmak için düğmeye bir tıklama dinleyicisi ekleme, adding a click listener to the button to remove item from the list
favSil.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
//seçilen değeri listeden çıkarmak için bu yöntemi arayacağız, we will call this method to remove the selected value from the list
//yöntemde kaldırılacak pozisyonu geçiyoruz, we are passing the position which is to be removed in the method
removeKisiler(position);
);
//finally returning the view
return view;
//this method will remove the item from the list
private void removeKisiler(final int position)
//Silme işlemini onaylamak için bir uyarı iletişim kutusu oluşturma, Creating an alert dialog to confirm the deletion
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Silmek istediğinizden EMİNMİSİNİZ?");
builder.setPositiveButton("EVET", new DialogInterface.OnClickListener() //uyarıdaki yanıt olumluysa, if the response is positive in the alert
@Override
public void onClick(DialogInterface dialogInterface, int i)
nuriList.remove(position); //öğeyi kaldırmak, removing the item
notifyDataSetChanged(); //listeyi yeniden yüklemek, reloading the list
);
//cevap olumsuz ise hiçbir şey yapılmıyor, if response is negative nothing is being done
builder.setNegativeButton("HAYIR", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialogInterface, int i)
);
//uyarı iletişim kutusunu oluşturma ve görüntüleme, creating and displaying the alert dialog
AlertDialog alertDialog = builder.create();
alertDialog.show();
enter image description here
enter image description here
【问题讨论】:
您的代码有点混乱和混乱。现在,如果您有 getTitle 方法或类似的方法,请尝试sss.get(i).getTitle()
。
点击监听器是否被调用?!
listViewNur.setOnItemClickListener(new AdapterView.OnItemClickListener() @Override public void onItemClick(AdapterView> adapterView, View view, int i, long l) Toast.makeText(getApplicationContext(), "单击项目时程序不会显示此 toast。它永远不会到达这一点。", Toast.LENGTH_SHORT).show(); );
onItemClick 里面的这些代码是什么?你如何填充列表?我看到你在使用ssss
,但我没有看到你在初始化它。这是什么“ssss”?
【参考方案1】:
我从这里的数据库中获取数据
public void favori_listele_class (String getir_kategori)
SQLiteDatabase db = veritabanim.getReadableDatabase();
String[] getColumnName="_id,kategori,bilmece,cevap,favori";
String[] arananDegerler="1",getir_kategori;
Cursor imlec=db.query("bilmecebulmaca_tablosu", getColumnName, "favori=? And kategori=?",arananDegerler , null, null, null);
//Cursor imlec=db.query("bilmecebulmaca_tablosu", getColumnName, "kategori=?",arananDegerler1 , null, null, null);
final ArrayList<Integer> favori_listesi_id = new ArrayList<Integer>();
final ArrayList<String> favori_listesi = new ArrayList<String>();
nurList = new ArrayList<>();
while(imlec.moveToNext())
int dizi_id=imlec.getInt(imlec.getColumnIndex("_id"));
String dizi_bilmece=imlec.getString(imlec.getColumnIndex("bilmece"));
String dizi_cevap=imlec.getString(imlec.getColumnIndex("cevap"));
int dizi_favori=imlec.getInt(imlec.getColumnIndex("favori"));
String dizi_soru= dizi_bilmece+ " "+dizi_cevap+ " "+dizi_favori;
favori_listesi.add(dizi_soru);
favori_listesi_id.add(dizi_id);
nurList.add(new NuriClass(dizi_id, getir_kategori, dizi_bilmece, dizi_cevap,dizi_favori,R.mipmap.ic_launcher));
ListeGoster((ArrayList<NuriClass>) nurList);
【讨论】:
以上是关于当我单击警报对话框中列出的项目时,Android Toast 没有出现的主要内容,如果未能解决你的问题,请参考以下文章