圈子页: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);
碰到的问题