Listfragment 列表标题 显示内容
阅读原文时间:2023年07月15日阅读:1

activity_main.xml

<fragment
    android:name="com.example.l12\_fragment3.TitleListFragment"
    android:layout\_width="0dp"
    android:layout\_weight="1"
    android:layout\_height="match\_parent" />

<FrameLayout
    android:id="@+id/fl\_main\_container"
    android:layout\_width="0dp"
    android:layout\_weight="3"
    android:layout\_height="match\_parent" >
</FrameLayout>

list_item.xml

public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity\_main);
}

}

public class DataUtils {
public static final String[] TITLES = {"title1","title2","title3","title4","title5"};
public static final String[] DETAILS = {"This is title1","This is title2",
"This is title3","This is title4","This is title5"};
}

public class TitleListFragment extends ListFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    return super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    //设置ListView为单选模式
    getListView().setChoiceMode(ListView.CHOICE\_MODE\_SINGLE);

    // 给listView设置adapter显示列表
    setListAdapter(new ArrayAdapter<String>(getActivity(),
            R.layout.list\_item, DataUtils.TITLES));

    //默认选中第一个item
    getListView().setItemChecked(0, true);
    //显示第一个详情
    showDetail(0);
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    showDetail(position);
}

/\*\*
 \* 显示指定下标的详情
 \* @param position
 \*/
private void showDetail(int position) {
    //创建DetailFragment
    DetailFragment fragment = new DetailFragment();
    //将对应的详情数据携带过去
    Bundle args = new Bundle();
    args.putString("DETAIL", DataUtils.DETAILS\[position\]);
    fragment.setArguments(args);
    //将其替换到id为fl\_main\_container的容器布局中
    getFragmentManager().beginTransaction().replace(R.id.fl\_main\_container, fragment).commit();
}

}

public class DetailFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    TextView textView = new TextView(getActivity());
    //取出保存的数据
    String detail = getArguments().getString("DETAIL");
    //设置
    textView.setText(detail);
    return textView;
}

}