0

我正在从此链接创建一个主/详细信息片段。这很好用,现在我想实现listviews,而不是详细片段类中的textview,(即)我想将masterview的详细信息显示为子listview,因此我尝试了detail.xml:

    <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:layout_width="120dp"
            android:layout_height="wrap_content"
            android:id="@+id/listview1"
            />"
 <ListView 
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:id="@+id/listview2"
            />"

    </LinearLayout>

在我的 detailFragment 类中

public class DetailFragment1 extends ListFragment {
     @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      String[] values = new String[] { "1", "2", "3",
                "4"  };
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, values);
              setListAdapter(adapter);

     }

我的问题是子列表视图在初始阶段显示,但我想在单击母版页的第一行时显示此列表视图。我是片段的新手,所以请帮助我实现这一点。提前致谢..

4

2 回答 2

1

创建回调接口:

public interface Callbacks {

        public void onItemSelected(long id);
}

让片段补充它:

public class DetailFragment1 extends ListFragment implements CallBacks {

在 ListFragment OnListitemClick 中:

@Override
public void onListItemClick(ListView listView, View view, int position, long id) {     
    mCallbacks.onItemSelected(id);
}

在活动中:

Public class MyActivity extends FragmentActivity implements Callbacks {

@Override
public void onItemSelected(long id) {
    // Replace the detail fragment with the corresponding item selected in the list
}
于 2013-10-24T07:56:38.167 回答
0

您可以设计一个包含 ListView 作为 master 和 frameLayout 容器的布局,而不是这样做。在 frameLayout 容器中,您可以动态膨胀布局,其设计方式是您可以拥有子列表视图和详细信息视图。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    tools:context=".NavigationActivity" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="@color/strip_background"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/nav_lv_transactions"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="none" >

        </ListView>

    </LinearLayout>

    <FrameLayout
        android:id="@+id/nav_fl_frag_container"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="14"
        android:background="@android:color/darker_gray" >

    </FrameLayout>

</LinearLayout>

在 onclick 侦听器中放置此代码,

Bundle arguments = new Bundle();
arguments.putString(ARG_ITEM_ID,
"Some Name");
MyClassFragment newFragment = new MyClassFragment();
newFragment.setArguments(arguments);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.nav_fl_frag_container, newFragment);
transaction.commit();

试试这个。它会工作

于 2013-10-24T07:53:26.890 回答