Change project总结

圈子页:FmCircleFragement包括一个顶部自定义的actionbar一个viewpager
使用技术:
fragment加载布局:在onCreatView加载fragment的布局文件使用View view = View.inflate(getContext(), R.layout.fragment_circle_fm, null);

viewpagere的常用方法:
vpCircle.setCurrentItem(0);//默认显示第一页
vpCircle.setOnPageChangeListener(new ViewPager.OnPageChangeListener() //翻页监听

viewpager的adapter只负责加载每一页的view,每页的业务逻辑交给各页去处理,即写一个basepager,然后分别生成各页的子类如hotPager等。
vpCircle.setAdapter(new ContentAdapter());

//viewpager的adapter
    class ContentAdapter extends PagerAdapter {
        @Override
        public int getCount() {
            return mPagerList.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            BasePager pager = mPagerList.get(position);
            container.addView(pager.mRootView);//加载view
            pager.initData();//初始化数据(放在此处会预加载下一页数据)
            return pager.mRootView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
    }

hotPager是各页的父类,抽出各页的公共部分

package com.diandao.ddandroid.pager;

import android.app.Activity;
import android.view.View;
import android.widget.FrameLayout;

import com.diandao.ddandroid.R;

/**
 * 圈子viewpager的两个pager的基类
 * 作者: FebMaple on 2016/6/1.
 * 邮箱: febmaple219@gmail.com
 * 版权: FebMaple
 * ====================================================
 */
public class BasePager {
    public Activity mActivity;
    public View mRootView;
    public FrameLayout flContent;

    public BasePager(Activity activity) {
        mActivity = activity;
        initViews();
    }

    public void initViews() {
        mRootView = View.inflate(mActivity, R.layout.base_pager_layout, null);
        flContent = (FrameLayout) mRootView.findViewById(R.id.fl_content);
    }

    public void initData() {

    }
}

RecyclerView显示两种不同布局的item
1重写getItemViewType()方法,对itemview进行分类
2重写onCreateViewHolder()方法,根据不同的viewType加载不同的item布局
3重写onBindViewHolder(),根据不同的viewHolder绑定不同的数据
RecyclerView相关api
setLayoutManager(),addItemDecoration(),setItemAnimator(),setAdapter()
*设置水平列表***new LinearLayoutManager(mActivity).setOrientation(LinearLayoutManager.HORIZONTAL);
RecyclerView的adapter的相关api
onCreatViewHolder(),onBindViewHolder(),getItemCount(),getItemViewType()

        ***第二部分:帖子详情页***

用到的技术

1:intent传递一个对象

Bundle mBundle = new Bundle();
mBundle.putParcelable("topic", topic);
intent.putExtras(mBundle);

2:webview加载(String类型)html内容而不是网址

webView.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);

如果使用网址的话直接加载loadUrl();

        ***第三部分 发布帖子***

使用技术:
1:使用recyclerview实现gridview进行图片选择
rvSelectPhoto.setLayoutManager(new GridLayoutManager(this, 3));
2: 使用toggleButton作为单选按钮
btnKeyboard2.setChecked(true);
btnAite2.setChecked(false);
btnEmoji2.setChecked(false);
btnCamera2.setChecked(false);
btnPhoto2.setChecked(false);

碰到的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值