• 一个可变布局列表,有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大师代发,拒绝转载,转载需要作者授权

  • 相关阅读:
    How to setup SLF4J and LOGBack in a web app
    Java Web services: WS-Security with Metro--referenc
    SOAP 及其安全控制--转载
    SQL 四种连接:内连接、左外连接、右外连接、全连接--转载
    Redis的安装、配置 --转载
    mysql中不同事务隔离级别下数据的显示效果--转载
    How to Map Distinct Value Types Using Java Generics--reference
    Spring(AbstractRoutingDataSource)实现动态数据源切换--转载
    springMVC项目在jboss7中配置应用自己的log4j--转载
    2017各银行贷款利息表及P2P平台贷款利率比较
  • 原文地址:https://www.cnblogs.com/demodashi/p/8509018.html
Copyright © 2020-2023  润新知