您的位置:首页 > 其它

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

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

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

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

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

能够加入多个头视图、尾视图
能够设置默认的切割线
能够隐藏第一个、第二个头视图的切割线
简化适配器中的方法
为ItemView设置点击事件

封装的代码已上传 GitHub,想要使用的能够下载,兴许会依据项目中的需求。不断加入新的功能。

GitHub的地址:https://github.com/Wan7451/Wan_RecycleViewAdapter

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

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: