SherlockListFragment - 如何将我的适配器内容放入片段分页器列表的R.id.content中?

时间:2012-06-08 05:27:44

标签: android actionbarsherlock

我有这段代码

public class MyFragment extends SherlockFragment {

    public static Fragment newInstance(Context context) {
        MyFragment f = new MyFragment();

        return f;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View v = inflater.inflate(R.layout.fragment_pager_list, container,false);
        View tv = v.findViewById(R.id.text);
        ((TextView)tv).setText("Layout One" );
        return v;
    }
}

我创建了一个包含联系人列表的适配器,我想将该联系人列表放在fragment_pager_list中。 我正在使用此代码

mAdapter = new SimpleCursorAdapter(getActivity(),
                R.layout.fragment_pager_list, null,
                new String[] {ContactsContract.Contacts.DISPLAY_NAME},
                new int[] { R.id.text}, 0);

        setListAdapter(mAdapter);

        // Start out with a progress indicator.
        setListShown(true);

如何在顶部显示“联系人”,在其下方显示我的两个联系人。

enter image description here

fragment_pager_list.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:drawable/gallery_thumb">

    <TextView android:id="@+id/text"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:gravity="center_vertical|center_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/hello_world"/>

    <!-- The frame layout is here since we will be showing either
    the empty view or the list view.  -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1" >
        <!-- Here is the list. Since we are using a ListActivity, we
             have to call it "@android:id/list" so ListActivity will
             find it -->
        <ListView android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawSelectorOnTop="false"/>

        <!-- Here is the view to show if the list is emtpy -->
        <TextView android:id="@android:id/empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="No items."/>

    </FrameLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

您应该延长SherlockListFragment。然后,您可以在其上调用setListAdapterdocumentation)。

过去这对我有用:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.some_list_layout, container, false);

    setListAdapter(/* Your adapter, should extend BaseAdapter or similar */);

    return v;
}

修改:此外,我相信您的ListView必须具有ID android:id="@android:id/list"。如果它无法使用该ID,请尝试找到 here 的解决方案。