Android - 显示空ListView的警报对话框

时间:2011-11-25 05:31:32

标签: java android listview alertdialog

如果没有listview项,如何显示空列表视图的警告对话框。请找到下面有三个文本字段的图像。当列表中没有记录/不匹配的记录时,我必须实现空列表视图。

列表视图实现如下:

ListView empListView; 
empListView = (ListView)findViewById(R.id.list1 );

我必须显示empListView的警告对话框。请帮我处理示例代码/链接。

5 个答案:

答案 0 :(得分:2)

根据我的意见,无需检查arraylist或适配器项目数量的大小。

您可以在列表视图上显示消息“抱歉没有找到记录”消息,而不是显示警告对话框。为此,您必须使用ListView的setEmptyView()方法设置空视图。

例如:

listViewFriends.setEmptyView(findViewById(R.id.empty));

答案 1 :(得分:2)

我认为你在setadapter方法中使用arraylist或其他一些数据如果你使用arraylist然后你必须在调用setadapter方法之前检查arraylist的大小。

if(a.size()>0)
    {
    lv = (ListView) findViewById(R.id.frendlist);
    lv.setAdapter(new ListAdapter(this, R.id.frendlist, a));
    }
    else
    {
        builder.setMessage(" You Have no friends") 
        .setCancelable(false)   
        .setPositiveButton("Ok", new DialogInterface.OnClickListener() 
        {      
            public void onClick(DialogInterface dialog, int id)
            {

            }   
            }) ; 

        AlertDialog alert = builder.create();
        alert.show();
    }

答案 2 :(得分:1)

我认为你在setadapter方法中使用arraylist或其他一些数据如果你使用arraylist然后你必须在调用setadapter方法之前检查arraylist的大小。

答案 3 :(得分:1)

if(cdata.getCount()>0)
{
    CursorAdapter adapter = new MyCursorAdapter( getApplicationContext(), R.layout.listview, cdata, fields, names);
    listview.setAdapter(adapter);
}
else
{
    //create dialog here
}

答案 4 :(得分:1)

这完全取决于你如何实现setAdapter方法等。但这是一个例子:

if(cdata.getCount()==0) {
  //empty, show alertDialog
  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setMessage("Search is empty")
   .setCancelable(true)
   .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
       }
   });
  AlertDialog alert = builder.create();
} 
else {
  //Not empty, set the adapter or do what you want. 
  empListview.setAdapter(new MyCursorAdapter( getApplicationContext(), R.layout.listview, cdata, fields, names));
}

上面的代码尚未经过测试。但是,如果进行微调,我可能会忘记一些事情。