Android ListView / ListFragment强行单行(Java代码)

时间:2012-03-20 10:20:35

标签: android android-listview android-fragments android-listfragment

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

类型为(android.R.layout.simple_list_item_checked)的ListFragment,点击后会加载其他片段并执行其他工作。

问题是,当滚动回到视图时,ListFragment中不在视图中的字符串被“包装”到下一行,没有明显的原因。下面的照片更好地说明了:


照片1:正常情况

1-normal


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


照片3:然而,当我选择保时捷并向下滚动时,“野马”文字已损坏

4-error1


照片4:随机点击后滚动回来的“兰博基尼”

5-error2


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

 @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运行它。它可能是这个版本的错误吗?

1 个答案:

答案 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>