Android:在片段中显示列表
我有一个现有的片段,我想在其中显示典型的地址信息,比如街道、城市、PIN和电话号码列表 为了显示电话号码列表,我在addressfragment.xml中添加了listview:Android:在片段中显示列表,android,android-listview,android-listfragment,Android,Android Listview,Android Listfragment,我有一个现有的片段,我想在其中显示典型的地址信息,比如街道、城市、PIN和电话号码列表 为了显示电话号码列表,我在addressfragment.xml中添加了listview: <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/content" android:layout_width="match_parent" android:layo
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp" >
<TextView
android:id="@+id/txtStreetAddr"
style="?android:textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lineSpacingMultiplier="1.2"
android:text="default" />
<ListView
android:id="@+id/phones"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:paddingLeft="0dp" >
</ListView>
</LinearLayout>
</ScrollView>
我的片段类:
public class AddressFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.fragment_screen_slide_page, container, false);
((TextView) rootView.findViewById(R.id.txtStreetAddr)).setText(
"123, Corner Street");
ListView phoneListView = ((ListView) rootView.findViewById(R.id.phones));
ArrayList<String> phNumbers = new ArrayList<String>();
phNumbers.add("4343534343");
phNumbers.add("6767566766");
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(MyApp.getAppContext(),android.R.layout.simple_list_item_1, phNumbers);
// Set The Adapter
phoneListView.setAdapter(arrayAdapter);
return rootView;
}
公共类AddressFragment扩展了片段{
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图组根视图=(视图组)充气器
.充气(右布局、碎片、屏幕、幻灯片、页面、容器、假);
((TextView)rootView.findviewbyd(R.id.txtStreetAddr)).setText(
“拐角街123号”);
ListView phoneListView=((ListView)rootView.findViewById(R.id.phones));
ArrayList phNumbers=新的ArrayList();
phNumbers.添加(“4343534343”);
phNumbers.添加(“67566766”);
ArrayAdapter ArrayAdapter=
新的ArrayAdapter(MyApp.getAppContext(),android.R.layout.simple\u list\u item\u 1,phNumbers);
//设置适配器
setAdapter(arrayAdapter);
返回rootView;
}
电话列表视图没有显示在屏幕上-为什么?
有没有更好的方法来处理这个问题?我想你忘了在
onCreateView(…)
在CreateView(…)上添加您的,
应该是
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView= inflater.inflate(R.layout.your_layout, container, false);
((TextView) rootView.findViewById(R.id.txtStreetAddr)).setText(
"123, Corner Street");
ListView phoneListView =((ListView) rootView.findViewById(R.id.phones);
ArrayList<String> phNumbers = new ArrayList<String>();
phNumbers.add("4343534343");
phNumbers.add("6767566766");
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, phNumbers);
// Set The Adapter
phoneListView.setAdapter(arrayAdapter);
return rootView;
}
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
查看rootView=充气机。充气(R.layout.your_布局,容器,false);
((TextView)rootView.findviewbyd(R.id.txtStreetAddr)).setText(
“拐角街123号”);
ListView phoneListView=((ListView)rootView.findViewById(R.id.phones);
ArrayList phNumbers=新的ArrayList();
phNumbers.添加(“4343534343”);
phNumbers.添加(“67566766”);
ArrayAdapter ArrayAdapter=
新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,phNumbers);
//设置适配器
setAdapter(arrayAdapter);
返回rootView;
}
我想你忘了在onCreateView(…)
在CreateView(…)上添加您的,
应该是
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView= inflater.inflate(R.layout.your_layout, container, false);
((TextView) rootView.findViewById(R.id.txtStreetAddr)).setText(
"123, Corner Street");
ListView phoneListView =((ListView) rootView.findViewById(R.id.phones);
ArrayList<String> phNumbers = new ArrayList<String>();
phNumbers.add("4343534343");
phNumbers.add("6767566766");
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, phNumbers);
// Set The Adapter
phoneListView.setAdapter(arrayAdapter);
return rootView;
}
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
查看rootView=充气机。充气(R.layout.your_布局,容器,false);
((TextView)rootView.findviewbyd(R.id.txtStreetAddr)).setText(
“拐角街123号”);
ListView phoneListView=((ListView)rootView.findViewById(R.id.phones);
ArrayList phNumbers=新的ArrayList();
phNumbers.添加(“4343534343”);
phNumbers.添加(“67566766”);
ArrayAdapter ArrayAdapter=
新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,phNumbers);
//设置适配器
setAdapter(arrayAdapter);
返回rootView;
}
删除滚动视图
并将线性布局
作为父布局。删除滚动视图
并将线性布局
作为父布局。如果您将滚动视图作为父视图,则必须以编程方式设置listview高度,您可以创建一个方法,如下所示---
希望这能很好地工作。如果您将scrollview作为父视图,那么您必须以编程方式设置listview高度,您可以创建一个方法,如下所示---
希望这能很好地工作。这可以解释运行时崩溃或编译时错误,而不是列表未显示错误,很抱歉这是部分代码…充气机确实在那里(有问题的代码已更新),正如我的街道地址所示correctly@Jasper也使用了
getActivity()
而不是MyApp.getAppContext()
MD>是,在我使用getActivity()之后listview正在显示-但我在列表中只看到一行..只有第一行。显然,ScrollView中的listview不会显示所有记录-这就是为什么我们现在只看到一条记录。这可能解释了运行时崩溃或编译时错误,而不是列表未显示错误,抱歉,这是部分代码…充气机确实是那里(有问题的代码更新),我的街道地址显示出来correctly@Jasper在我使用getActivity()之后,还使用了getActivity()
而不是MyApp.getAppContext()
MD>Yeslistview正在显示-但我在列表中只看到一行..只有第一行。显然ScrollView中的listview不会显示所有记录-这就是为什么我们现在只看到一条记录。完整地发布布局xml文件,并发布完整的onCreateView。完整的布局发布完整的布局发布xml文件,并发布com完成创建视图。发布完整的布局Hanks Chandrakanth…这确实解决了单记录问题。如果您知道任何地址小部件或更好的处理方法,请发布…!感谢Chandrakanth…这确实解决了单记录问题。如果您知道任何地址小部件或更好的处理方法,请发布。。。!
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
phoneListView.setAdapter(arrayAdapter);
setListViewHeightBasedOnChildren(phoneListView);