[英]Adding to ListView
我正在尝试向活动添加列表视图。 这是可能发生的情况:用户单击一个按钮,该按钮使用asyncTask从Internet获取数据。 然后,该数据应添加到列表视图。 数据来自在线表,因此表中有10行,而Listview中应该有10个值。
但是我有一些问题。 首先,可以将Listview添加到现有布局并动态更新吗?
列表视图是否意味着您不能使用setContentView()方法,而必须使用setListAdapter?
谢谢
编辑
更新的代码-适用于:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView( R.layout.new_sightings );
ListView list = getListView();
list.setAdapter( new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, values ) );
list.setTextFilterEnabled( true );
}
XML布局
?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation = "vertical">
<TableLayout
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
>
<TableRow
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:layout_weight = "1"
>
<TextView
android:id = "@+id/txtTitle"
android:layout_width = "wrap_content"
android:layout_height = "fill_parent"
android:layout_weight = "1"
android:gravity = "center"
android:text = "ISS Predictions"
android:textStyle="bold"
android:textColor = "#FFFFFF"
/>
<Button
android:id="@+id/reloadTen"
android:layout_height="wrap_content"
android:layout_width ="fill_parent"
android:layout_gravity = "right"
android:layout_weight = "1"
android:text = "Reload"
android:textColor = "#FFFFFF"
android:textStyle = "bold"
android:background = "#000000"
/>
</TableRow>
</TableLayout>
<ListView
android:id = "@+id/android:list"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:textSize = "15dp"
android:textStyle = "bold"
/>
</LinearLayout>
1)是的,您可以在布局中使用ListView
,并更新ListView
显示的数据。 通常,您需要创建一个从ArrayAdapter继承的类,以弥合基础数据与为ListView
生成视图之间的鸿沟。
当您想要更新显示的数据时,请在适配器上使用add()和notifyDataSetChanged() 。
2)不。仅当您的活动继承自ListActivity
并且具有ID为@android:id/list
的ListView
元素时,才调用setListAdapter()
。 这是此类元素的示例:
<ListView android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
您仍然可以使用setContentView()
传递要使用的所需XML布局。
3)是,由于上述原因。
您可以将ListView创建为任何XML布局的一部分。 您无需扩展ListActivity(我认为这是您从中获得灵感的地方),但可以提供帮助。
如果不扩展ListActivity,则可以将ContentView设置为已创建的布局的ID(并包含ListView)。
1)是的,您可以静态或即时(通过LayoutInflater膨胀或新的ListView(...))将Listview静态或动态地添加到现有布局中。
2)您可以使用setContentView设置现有布局,无论它是否包含listview。 如果它包含现有的列表视图,则需要说出findViewById(R.id.myListLayoutId)并确保将其包含在XML中。
3)您可以通过指定myExistingView.addView(listView,index)的索引,将listview添加到现有布局的之前或之后的现有布局。
无论如何,您都需要在列表视图上设置适配器(无论您如何创建/添加),该适配器将包含要填充的数据。 您可以随时向适配器添加数据,只要您通过调用adapter.notifyDataSetChanged()通知适配器其数据集已更改即可。 这将导致要更新其适配器的listview。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.