博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个可变布局列表,有9种布局item大小,每个item可拖拽切换位置
阅读量:6844 次
发布时间:2019-06-26

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

代码地址如下:

http://www.demodashi.com/demo/11271.html

一、准备工作

  • 准备一台安卓设备手机,4.4以上版本
  • 本例子实现,一个可变布局列表,有9种布局item大小,每个item可拖拽切换位置

二、程序实现

  • 项目结构截图c1IB7HIF68OGs5pGI3N.png
  • 主界面列表程序
public class DragListActivity extends AppCompatActivity {        private RecyclerView mRecyclerView;        private ListAdapter mListAdapter;            @Override        protected void onCreate(@Nullable Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_list);            initView();        }            private void initView() {            mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));            mListAdapter = new ListAdapter(this, getData());            mRecyclerView.setAdapter(mListAdapter);        }            private List
getData() { List
demoEntities = new ArrayList<>(); for (int i = images.length; i > 0; i--) {//9 List
picStrings = new ArrayList<>(); for (int j = 0; j < i; j++) { picStrings.add(images[j]); } demoEntities.add(new DemoEntity(picStrings)); } return demoEntities; } private String[] images = new String[]{ "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024420832&di=5aa012750e828d3ef0c3f789a36e2347&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F30%2F5ED1I1R45I1R.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024420832&di=7a5226ba75156eb2d270e7b79bdb3707&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F26%2F71H003OBEC6I.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024420831&di=78e6711286a797838ba659d3ffb71b50&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F25%2FWC9015475YJ9.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024421112&di=ca179c35d92159b0f3d692f334b1021d&imgtype=0&src=http%3A%2F%2Fimg.tupianzj.com%2Fuploads%2Fallimg%2F140506%2F1-140506160101.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024421112&di=3522c0c7f522369c0840012bc3886fa4&imgtype=0&src=http%3A%2F%2Fimg.tupianzj.com%2Fuploads%2Fallimg%2F140506%2F1-140506160102-50.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024421111&di=83f6400e4644b91db81047e4b67be8d4&imgtype=0&src=http%3A%2F%2Fimg.tupianzj.com%2Fuploads%2Fallimg%2F140506%2F1-140506160120-50.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024421111&di=216984c5a5163891965c499cb020322a&imgtype=0&src=http%3A%2F%2Fimg.tupianzj.com%2Fuploads%2Fallimg%2F140506%2F1-140506160126-50.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024421110&di=0cd844d61e951abe5249aa9c660d37c5&imgtype=0&src=http%3A%2F%2Fimg.tupianzj.com%2Fuploads%2Fallimg%2F140506%2F1-140506160135.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1498024421108&di=86bf19c2d8d47beaf5cad6797c4da4eb&imgtype=0&src=http%3A%2F%2Fimg.tupianzj.com%2Fuploads%2Fallimg%2F140506%2F1-140506160300.jpg", }; }
  • 适配器代码
public class ListAdapter extends RecyclerView.Adapter
{ private List
mDemoEntities; private Context mContext; public ListAdapter(Context mContext, List
demoEntities) { this.mContext = mContext; mDemoEntities = demoEntities; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(mContext).inflate(R.layout.item_view, parent, false); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { //设置是否可以拖拽,必须执行在bindData之前 holder.mImageNice9Layout.setCanDrag(true); holder.mImageNice9Layout.bindData(mDemoEntities.get(position).pictures);//入参:集合 //位置item点击事件 holder.mImageNice9Layout.setItemDelegate(new ImageNice9Layout.ItemDelegate() { @Override public void onItemClick(int position) { Toast.makeText(mContext, "位置" + position, Toast.LENGTH_SHORT).show(); } }); } @Override public int getItemCount() { return mDemoEntities.size(); } class ViewHolder extends RecyclerView.ViewHolder { ImageNice9Layout mImageNice9Layout; public ViewHolder(View itemView) { super(itemView); mImageNice9Layout = (ImageNice9Layout) itemView.findViewById(R.id.item_nice9_image); } } }
  • 其他代码都在依赖库,具体下载demo查阅

三、运行效果

  • gaollg8.GIF

四、其他补充

  • 欢迎浏览作者简书博客:

一个可变布局列表,有9种布局item大小,每个item可拖拽切换位置

代码地址如下:

http://www.demodashi.com/demo/11271.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

你可能感兴趣的文章
来自Reddit的声音:网络人员对SDN说“不”
查看>>
贵阳“小步快跑”搭上云计算的早班车
查看>>
配置少量固态硬盘即能大幅提升性能
查看>>
国内车载信息安全市场 东软靠技术创新的行动力独树一帜
查看>>
中国银行携手IBM成功建成智能化网点
查看>>
再谈大型数据中心的运维工作
查看>>
报告显示电话监控技术处于发展浪潮
查看>>
安全研究人员发现可以利用推特控制僵尸网络
查看>>
三种在Linux上创建或扩展交换分区的简单方法
查看>>
LMD Tool:Linux恶意软件检测工具
查看>>
铜缆宽带接入即将走向末路?
查看>>
哪些技术对5G贡献最大?毫米波成工程师追捧之一
查看>>
企业级SaaS服务的现实之路:放弃团队 直指公司
查看>>
你应该成为 Web 开发者的 5 大理由
查看>>
Locky勒索软件是如何利用DGA的?
查看>>
打造自己的 Python 编码环境
查看>>
使用Azure托管磁盘简化云存储管理
查看>>
你需要知道知道这几个因素会不利于关键词排名优化
查看>>
《Cocos2D权威指南》——1.5 在设备上运行HelloCocos2D项目
查看>>
东莞市政府常务会议审议通过《东莞市大数据发展实施方案》
查看>>