zoukankan      html  css  js  c++  java
  • 一个可变布局列表,有9种布局item大小,每个item可拖拽切换位置

    代码地址如下:
    http://www.demodashi.com/demo/11271.html

    一、准备工作

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

    二、程序实现

    • 项目结构截图
    • 主界面列表程序
        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<DemoEntity> getData() {
                List<DemoEntity> demoEntities = new ArrayList<>();
                for (int i = images.length; i > 0; i--) {//9
                    List<String> 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<ListAdapter.ViewHolder> {
            private List<DemoEntity> mDemoEntities;
            private Context mContext;
        
            public ListAdapter(Context mContext, List<DemoEntity> 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查阅

    三、运行效果

    四、其他补充

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

    代码地址如下:
    http://www.demodashi.com/demo/11271.html

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

  • 相关阅读:
    链表的相关算法及应用(二)
    Hexo博客同时托管到github和coding
    Valine评论出现Code 403:访问被API域名白名单拒绝,请检查你的安全域名设置
    记一次Python爬虫入门
    基于SSM的个人博客
    JSTL和EL表达式遍历List数组
    bootstrap快速开发响应式页面
    标签随机文字颜色和字体大小的实现方法
    安卓Service和Broadcast实现简单的音乐播放器
    ListView设置OnItemClickListener点击没有反应
  • 原文地址:https://www.cnblogs.com/demodashi/p/8509018.html
Copyright © 2011-2022 走看看