当我单击警报对话框中列出的项目时,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 没有出现的主要内容,如果未能解决你的问题,请参考以下文章

单击弹出项目时未显示警报对话框。有啥解决办法吗?

警报对话框 - 如何?

通过单击通知下拉菜单中的选项卡打开(警报)对话框

Android- 使用 EditText 帮助修复自定义警报对话框

将 onlongclick 侦听器添加到警报对话框

更改构建版本后 Android 自定义警报对话框显示错误