• 增强版的RecycleViewAdapter,能够直接使用


    在Android的项目中。须要大量的列表组件来显示数据。在之前的项目中一直使用的是ListView 组件,可是在最新的V7包中出现了能后替代ListView的组件RecycleView。


    所以在新的项目中使用了大量的RecycleView来替代ListView。


    在使用RecycleView的时候。发现做了大量的反复操作。所以对RecycleView进行了简单的封装。方便在项目中视使用。


    封装的操作主要是针对RecycleViewAdapter的封装,详细的功能例如以下:


    1. 能够加入多个头视图、尾视图
    2. 能够设置默认的切割线
    3. 能够隐藏第一个、第二个头视图的切割线
    4. 简化适配器中的方法
    5. 为ItemView设置点击事件
    封装的代码已上传 GitHub,想要使用的能够下载,兴许会依据项目中的需求。不断加入新的功能。



    详细的使用方式例如以下:


    ArrayList<String> data = new ArrayList<>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            for (int i = 0; i < 100; i++) {
                data.add("Item" + i);
            }
            RecyclerView mainView = (RecyclerView) findViewById(R.id.mianView);
    
            WGAdapter adapter = new WGAdapter(this, data, android.R.layout.simple_list_item_1);
            mainView.setAdapter(adapter);
    
    
            ImageView headerView = new ImageView(this);
            headerView.setImageResource(R.mipmap.ic_launcher);
    
            adapter.addHeaderView(headerView); //加入头视图
    
    
            Button footerView = new Button(this);
            footerView.setText("load");
            adapter.addFooterView(footerView); //加入尾视图
    
    
            WanItemDecoration item = new WanItemDecoration(this, WanItemDecoration.VERTICAL_LIST);
            //item.setIsShowSecondItemDecoration(false); //不显示第一行 切割线
            item.setIsShowFirstItemDecoration(false);  //不显示第二行 切割线
            item.setMarginLeftDP(10);   //切割线左边距
            item.setMarginRightDP(10);  //切割线右边距
    
            mainView.addItemDecoration(item);  //加入切割线
    
            mainView.setLayoutManager(new LinearLayoutManager(this));
    
            adapter.setOnItemClickListener(this); //设置点击事件
    
        }
    
        @Override
        public void onItemClickListener(int posotion) {
            Toast.makeText(this, data.get(posotion), Toast.LENGTH_LONG).show();
        }
    
        class WGAdapter extends WanAdapter<String> {
    
    
            protected WGAdapter(Context context, List<String> mDatas, int itemLayoutId) {
                super(context, mDatas, itemLayoutId);
            }
    
            /**
             * @param holder itemHolder
             * @param item   每一Item显示的数据
             */
            @Override
            public void convert(WanViewHolder holder, String item) {
                //holder.setText(android.R.id.text1, item);
                //或者
                TextView text = holder.getView(android.R.id.text1);
                text.setText(item);
            }
        }



    注意:假设要定义切割线的样式,须要加入属性:
     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- ################################################ -->
            <!-- 切割线的样式有这里定义。  一般都是Drawable -->
            <item name="android:listDivider">@drawable/divider</item>
        </style>




  • 相关阅读:
    android的FATAL EXCEPTION: main错误
    ORA12560: TNS: 协议适配器错误
    BroadcastReceiver应用详解
    using C# 详解
    mysqlproxy0.8版本读写分离测试总结
    Mysql SHOW PROCESSLIST Sending data
    [转载]大型网站运维探讨和心得
    找出并optimization表
    mysql中普通索引和唯一索引的效率对比
    ps aux 中STAT 解释
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5267841.html
Copyright © 2020-2023  润新知