我想在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'
答案 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对象(如果它在代码中则列出)