我似乎无法找到这个所谓的简单问题/错误的解决方案,所以这就是它:
类型为(android.R.layout.simple_list_item_checked)的ListFragment,点击后会加载其他片段并执行其他工作。
问题是,当滚动回到视图时,ListFragment中不在视图中的字符串被“包装”到下一行,没有明显的原因。下面的照片更好地说明了:
照片1:正常情况
照片2:列表向下滚动 - 一切仍然正常(兰博基尼不在视野范围内)
照片3:然而,当我选择保时捷并向下滚动时,“野马”文字已损坏
照片4:随机点击后滚动回来的“兰博基尼”
我用来创建列表视图的代码非常简单:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setHorizontalFadingEdgeEnabled(true);
getListView().setVerticalFadingEdgeEnabled(true);
getListView().setFastScrollEnabled(true);
carsTitleAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_checked, CarModels.Models);
setListAdapter(carsTitleAdapter);
CarModels.class中的字符串
public static final String[] Models = {
"Porsche",
"Lamborghini",
"Ferrari",
"McLaren",
"Aston Martin",
"Jaguar",
"Audi",
"Mustang",
};
我尝试在onListItemClick()的末尾调用notifyDataSetChanged(),希望它会刷新列表,但问题仍然存在。任何可能的解决方案?谢谢!
PS:我在Galaxy Tab 10.1,Honeycomb 3.1上使用support-library-v4运行它。它可能是这个版本的错误吗?
答案 0 :(得分:2)
我通过覆盖onCreateView并在方法返回的视图中传递一个包含带有android:id =“@ android:id / list”的ListView的布局文件来解决这个问题。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.list_fragment_layout, null);
}
list_fragment_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>