Android-节日短信送祝福(UI篇:2-展示节日列表的Framgment的创建)

在上一篇文章中,已经基本实现了主布局,接下来,我们将加以完善——在这里,要实现上篇文章中提到过的FestivalCategoryFragment


下面是布局文件的实现:
fragment_festival_category.xml

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/id_gv_festival_category"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="3"
    android:horizontalSpacing="3dp"
    android:padding="16dp"
    android:verticalSpacing="2dp" >
</GridView>

布局呢很简单,就是一个GridView

以及GridView的item的布局:
item_festival.xml

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/id_tv_festival_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:gravity="center"
        android:padding="8dp" />

</android.support.v7.widget.CardView>

这里为了增加立体感,在外层设置一个CardView
但是要添加相应的Library Dependency -> com.android.support:cardview-v7


public class FestivalCategoryFragment extends Fragment {
    public static final String ID_FESTIVAL="FestivalId";

    private GridView mGridView;
    private ArrayAdapter<Festival> mAdapter;
    private LayoutInflater mInflater;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_festival_category, container,
                false);//注意:是"包名.R"
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        mInflater = LayoutInflater.from(getActivity());

        mGridView = (GridView) view.findViewById(R.id.id_gv_festival_category);

        mAdapter = new ArrayAdapter<Festival>(
                getActivity(), -1, FestivalLab.getInstance().getFestivals()) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.item_festival,
                            parent, false);
                }
                TextView tv = (TextView) convertView
                        .findViewById(R.id.id_tv_festival_name);
                tv.setText(getItem(position).getName());

                return convertView;
            }
        };
        mGridView.setAdapter(mAdapter);

        mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Intent intent=new Intent(getActivity(), ChooseMsgActivity.class);
                intent.putExtra(ID_FESTIVAL,mAdapter.getItem(position).getId());
                startActivity(intent);
            }
        });
    }
}

需要注意的是,这里所继承的父类Fragment是来自android.support.v4.app,不要弄错为android.app

(@Nullable 参数可为null)

可以看到,FestivalCategoryFragment的实现比较的容易,还末尾处实现了GridView的点击事件,点击之后跳转到相应的ChooseMsgActivity,用于选择事先提供的祝福短信。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Fragment中添加页面的步骤如下: 1. 创建一个新的布局文件,用于显示新页面的UI元素。 2. 在Fragment类中创建一个新的视图变量,用于引用新页面的根视图。 3. 在onCreateView()方法中加载新页面的布局文件,将其实例化为一个View对象,并将该对象返回。 4. 在新页面的布局文件中添加所需的UI元素,并设置它们的属性和监听器。 5. 在Fragment中实现新页面中UI元素的逻辑,例如按钮点击事件的处理等。 6. 将新页面添加到Fragment的显示列表中,通常使用FragmentManager和FragmentTransaction实现。 具体实现代码可以参考以下示例: ``` public class MyFragment extends Fragment { private View rootView; private Button btnNextPage; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 加载新页面的布局文件 rootView = inflater.inflate(R.layout.fragment_page2, container, false); // 获取新页面中的UI元素 btnNextPage = (Button) rootView.findViewById(R.id.btn_next_page); // 设置UI元素的监听器 btnNextPage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理按钮点击事件 // TODO: 进入下一个页面 } }); // 返回新页面的根视图 return rootView; } // 将新页面添加到Fragment的显示列表中 private void addNextPage() { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, new NextFragment()); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值