博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android Pro] 超能RecyclerView组件使用
阅读量:7105 次
发布时间:2019-06-28

本文共 3749 字,大约阅读时间需要 12 分钟。

RecyclerView最强大的功能在于秒变功能,只需要改动很少的代码就可以实现ListView,GridView及水平ListViw的切换功能

public class MainActivity extends ActionBarActivity {    private RecyclerView mRecyclerView;    private List mDatas;    private TestAdapter mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initDatas();        initViews();    }    private void initDatas() {        mDatas=new ArrayList();        TestData data=new TestData();        for (int i = 'A'; i < 'z'; i++) {            data.setTitle(Title+(char)i);            data.setContent(Content+(char)i);            mDatas.add(data);        }    }    private void initViews() {        mRecyclerView=(RecyclerView) findViewById(R.id.test_rcv);        mAdapter=new TestAdapter(this, mDatas);        mRecyclerView.setAdapter(mAdapter);/************水平ListView效果****************************************/        LinearLayoutManager ll=new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true);        mRecyclerView.setLayoutManager(ll);/************垂直ListView效果****************************************/        LinearLayoutManager ll=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, true);//实现ListView效果        mRecyclerView.setLayoutManager(ll);/************水平滚动的GridView效果****************************************/        StaggeredGridLayoutManager ll=new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.HORIZONTAL);//水平GridView效果,5列展示        mRecyclerView.setLayoutManager(ll);/************GridView效果****************************************/        GridLayoutManager ll=new GridLayoutManager(this, 4);//4列展示        mRecyclerView.setLayoutManager(ll);    }}

下面就是实现瀑布流操作,主要改的就是我们的适配器,要在适配器中动态计算item的高度

 

public class WaterFlowAdapter extends Adapter {    private Context mContext;    private List mDatas;    private List heightArray;    public WaterFlowAdapter(Context mContext, List mDatas) {        this.mContext = mContext;        this.mDatas = mDatas;        heightArray=new ArrayList();        for (int i = 0; i < mDatas.size(); i++) {            heightArray.add((int)(100+Math.random()*300));        }    }    @Override    public WaterFlowAdapter.TestViewHolder onCreateViewHolder(ViewGroup paramViewGroup, int paramInt) {        View v = LayoutInflater.from(mContext).inflate(R.layout.lv_item, null);   wrong        View v = LayoutInflater.from(mContext).inflate(R.layout.lv_item,paramViewGroup,false); right        TestViewHolder holder = new WaterFlowAdapter.TestViewHolder(v);        return holder;    }    @Override    public void onBindViewHolder(WaterFlowAdapter.TestViewHolder paramVH, int paramInt) {        LayoutParams lp=paramVH.itemView.getLayoutParams();        lp.height=heightArray.get(paramInt);        paramVH.itemView.setLayoutParams(lp);        paramVH.titleTv.setText(mDatas.get(paramInt).getTitle());        paramVH.contentTv.setText(mDatas.get(paramInt).getContent());    }    @Override    public int getItemCount() {// TODO Auto-generated method stub        return mDatas.size();    }    class TestViewHolder extends ViewHolder {        ImageView iconIv;        TextView titleTv;        TextView contentTv;        public TestViewHolder(View holder) {            super(holder);            iconIv = (ImageView) holder.findViewById(R.id.item_iv);            titleTv = (TextView) holder.findViewById(R.id.item_title);            contentTv = (TextView) holder.findViewById(R.id.item_content);        }    }}

最后在Activity中:

mAdapter=new WaterFlowAdapter(this, mDatas);mRecyclerView.setAdapter(mAdapter);StaggeredGridLayoutManager ll=new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);//水平GridView效果,5列展示mRecyclerView.setLayoutManager(ll);

 

转载地址:http://slphl.baihongyu.com/

你可能感兴趣的文章
Java 函数
查看>>
企业工商信息数据接口
查看>>
北京15家颜值爆表的餐厅!90%的妹纸来这里都不是为了吃饭
查看>>
消息队列(三)RocketMQ消息顺序和消息重复
查看>>
VMWARE 7 USB设备的服务VMware USB Arbitration 无法启动,解决
查看>>
Arms是一个整合了大量主流开源项目的Android Mvp快速搭建框架
查看>>
下一代大数据计算引擎之争,你更看好 Spark 还是 Flink?
查看>>
上下文交换
查看>>
vim操作使用
查看>>
烂泥:【解决】Ubuntu下使用SSH连接centos系统很慢
查看>>
C语言 模拟三次密码输入
查看>>
NagiosQL插件的安装应用
查看>>
MVC设计模式的总结
查看>>
muddleftpd配置和用法
查看>>
Oracle 学习之RMAN(九)BACKUP常用参数
查看>>
如何对待上司的弱项(或缺点)
查看>>
【C#入门经典(第五版)】第二章 编写C#程序
查看>>
Cassandra – 数据结构设计概念和原则
查看>>
编译安装python3.7和ipython
查看>>
SSDCRM正式推出基于linux系统的一键安装版
查看>>