Android 如何使列表不可单击?

Android 如何使列表不可单击?,android,listview,clickable,Android,Listview,Clickable,我正在使用AsyncTask类搜索单词,因此我希望在列表中显示单词“searching” 当进程被执行时 好的,我想做的是在搜索完成之前有一个不可点击的列表,以便,如果搜索词被点击,什么都不会发生 哪种方法是正确的? 非常感谢 当您使用AsyncTask时,您可以在onPreExecute方法中使用带有消息“search”的ProgressDialog,并在完成后将其关闭(在onPostExecute中) 这样,ListView也将被禁用 @Override protected void onP

我正在使用AsyncTask类搜索单词,因此我希望在列表中显示单词“searching” 当进程被执行时

好的,我想做的是在搜索完成之前有一个不可点击的列表,以便,如果搜索词被点击,什么都不会发生

哪种方法是正确的?
非常感谢

当您使用
AsyncTask
时,您可以在
onPreExecute
方法中使用带有消息“search”的
ProgressDialog
,并在完成后将其关闭(在
onPostExecute
中)

这样,ListView也将被禁用

@Override
protected void onPreExecute() {     
    super.onPreExecute();       
    mProgressDialog = ProgressDialog.show(mContext, message, "Please wait...");
    mProgressDialog.setCancelable(false);
}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    if(mProgressDialog != null && mProgressDialog.isShowing())
        mProgressDialog.dismiss();

   // set data for listview     
}

加载、搜索和获取数据时,您可以在
列表视图中显示页眉视图或/和页脚视图。在设置适配器之前,只需添加这些视图。搜索单词时,请调用
列表视图
,并启用页眉/页脚视图,例如,通过调用显示消息

请注意,在设置适配器之前必须添加视图

例如:

LayoutInflater inflater = getLayoutInflater();
mFooterView = inflater.inflate(R.layout.footer, null, false);
mListView.addFooterView(mFooterView);       
mListView.setAdapter(mAdapter);

在此之后,请随时调用
addFooterView()
显示您的邮件,并调用以隐藏您的邮件。

我不知道任何直接解决方案(必须有),但我的方法是:

onPreExecute

  • 使您的ListView
    setEnabled(false)
    无法单击
  • 将自定义布局(包含搜索消息)的可见性设置为
    setVisibility(View.VISIBLE)
    ,以使其在ListView顶部可见。为此,您需要在
    FrameLayout
    中组合ListView和自定义布局
  • onPostExecute

    • 更改ListView内容后,只需反转此过程即可
    通过这种方式,您可以显示覆盖整个ListView的透明/半透明区域,并在其顶部或中心显示消息


    我在我的一个项目中使用过这种方法,看起来非常不错:)

    为什么不使用通知来显示查询正在执行

    因为它可以确保搜索继续进行,即使你去其他应用程序


    你问的问题意味着你的应用程序的用户等待了很长时间才搜索一个单词,而什么也不做,这对于为人类设计的应用程序来说是不可取的

    谢谢,但可设置点击(布尔值)正是我所需要的:)没问题。无论是这样还是那样,都必须继续编码:)