是否可以在Android列表活动中添加另一个视图?

时间:2012-10-17 20:02:37

标签: android geometry listactivity

我想在listactivity中添加一个等待圈。我在这篇文章中使用了答案: Using the "animated circle" in an ImageView while loading stuff

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

现在,当我尝试它时,我得到一个错误,我最常使用setContentView与我想使用的listview布局的id。

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):引起:   java.lang.RuntimeException:您的内容必须具有其id为的ListView   属性是'android.R.id.list'

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

是的,可以轻松完成。

像普通活动一样创建布局xml,在此活动中创建一个带有android:id=@android:id/list的空列表视图。

启动ListActivity时,将setContentView设置为自定义布局。 ListActivity将自动查找标识为android:id/list的listView,并将该列表视图用于所有与列表相关的功能。

ListActivity的相关文字:

  

ListActivity具有默认布局,该布局由屏幕中央的单个全屏列表组成。但是,如果需要,可以通过在onCreate()中使用setContentView()设置自己的视图布局来自定义屏幕布局。为此,您自己的视图必须包含一个ID为“@android:id / list”的ListView对象(如果它在代码中则列出)