关于几何:是否可以向Android listactivity中添加另一个视图?

Is it possible to add another view to an Android listactivity?

我想在我的listactivity中添加一个等待圈。我在这篇文章中使用了答案:
加载东西时在ImageView中使用"动画圆"

但是我认为我必须添加等待循环布局的setContentView才能使用findViewById。问题是我不知道我是否可以在同一活动中两次使用setContentView。

现在,当我尝试它时,出现一个错误,我最常使用setContentView和要使用的listview布局的ID。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview);}


    public void showCallList() // show call list on screen
{
    getListView().setVisibility(View.GONE);
    findViewById(R.loadingPanel).setVisibility(View.VISIBLE);
    CallListArrayAdapter adapter = new CallListArrayAdapter(this,
            arrayListCalls);
    setListAdapter(adapter);
    findViewById(R.id.loadingPanel).setVisibility(View.GONE);
    getListView().setVisibility(View.VISIBLE);
}

我得到的例外是:

E/AndroidRuntime(4320): Caused by:
java.lang.RuntimeException: Your content must have a ListView whose id
attribute is 'android.R.id.list'


是的,很容易做到。

像创建普通活动一样创建布局xml,并在该活动内部使用android:id=@android:id/list创建一个空的listview。

启动ListActivity时,将ContentView设置为自定义布局。 ListActivity将自动找到ID为android:id/list的listView,并将该listview用于所有与列表相关的功能。

ListActivity中的相关文本:

ListActivity has a default layout that consists of a single, full-screen list in the center of the screen. However, if you desire, you can customize the screen layout by setting your own view layout with setContentView() in onCreate(). To do this, your own view MUST contain a ListView object with the id"@android:id/list" (or list if it's in code)


如果您要呈现自己的自定义视图(动画圆),然后将其添加到活动中,则必须使用addContentView(View view,ViewGroup.LayoutParams params),将另外一个内容视图添加到活动。在活动中任何现有视图之后添加-不删除现有视图。
这些是参数:
查看要显示的内容。
params视图的布局参数。

但是执行此操作的正确方法(当然取决于要加载的数据量)是使用AsyncTask wich,它可以正确且轻松地使用UI线程。此类允许执行后台操作并在UI线程上发布结果,而无需操纵线程和/或处理程序。
异步任务由在后台线程上运行的计算定义,并且其结果发布在UI线程上。异步任务由3个通用类型(称为Params,Progress和Result)以及4个步骤(称为onPreExecute,doInBackground,onProgressUpdate和onPostExecute)定义。
例如,您可以在onPreExecute方法上调用进度对话框(用作等待圈),并在doInBackground方法中列出文件。
祝你好运!!!


实际上,您不需要ListActivity即可拥有ListView。您也可以将普通的Activity与普通的layout.xml一起使用,并在其中放置<ListView>以及所需的所有其他视图。

而不是由ListActivity定义的getListView(),使用普通的findViewById(),其ID是您在layout.xml中提供的ListView的ID。


您不能再次调用setContentView。相反,您应该将其他布局添加到还包含ListView的主XML中。您可以在那里找到它。