3

我似乎无法找到解决这个所谓的简单问题/错误的方法,所以这里是:

一个 ListFragment 类型(android.R.layout.simple_list_item_checked),当点击它时,将加载其他片段并做其他工作。

问题是 ListFragment 中不在视图中的字符串在滚动回视图时会无缘无故地“包装”到下一行。用下面的照片更好地说明:


照片 1:正常情况

1-正常


照片 2:列表向下滚动 - 一切正常(兰博基尼不在视野范围内) 2-正常端


图 3:但是当我选择 Porsche 并向下滚动时,“Mustang”文本已损坏

4-错误1


照片 4 : 随机点击后向上滚动的“兰博基尼”也是如此

5-错误2


我用来创建列表视图的代码非常简单:

 @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、带有 support-library-v4 的 Honeycomb 3.1 上运行它。这可能是这个版本的错误吗?

4

1 回答 1

2

我通过覆盖 onCreateView 并传递一个布局文件解决了这个问题,该文件包含一个 ListView 和 android:id = "@android:id/list" 在从该方法返回的视图中。

        @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>
于 2012-03-21T07:54:11.953 回答