bingoogolapple / bgabaseadapter-android Goto Github PK
View Code? Open in Web Editor NEW在 AdapterView 和 RecyclerView 中通用的 Adapter 和 ViewHolder。RecyclerView 支持 DataBinding 、多种 Item 类型、添加 Header 和 Footer。RecyclerView 竖直方向通用分割线 BGADivider
在 AdapterView 和 RecyclerView 中通用的 Adapter 和 ViewHolder。RecyclerView 支持 DataBinding 、多种 Item 类型、添加 Header 和 Footer。RecyclerView 竖直方向通用分割线 BGADivider
建议可以贴出混淆配置来下。
如果setData(ListData)里的ListData是空List的时候,动态添加数据加不上,但是输出ListData确实是增加条数了。。但是一开始ListData就有数据的话动态添加是毫无问题的。代码来来回回的看了几十遍也没看出来哪的问题,不确定是控件的问题还是我自己代码本身的问题,其他人有遇到过这种情况吗?
添加HeaderView、FooterView ?? 没发现有添加头部和尾部的方法,看能不能加上,
e.g. should use "getData" instead of "getDatas"
如题
功能缺失,不支持FooterView和HeaderViewd的删除,建议增加
没有分包就不会出现,不知道是这这里写的有问题还是怎么回事!
使用悬浮分类列表的时候 添加头部布局 第一个悬浮字母会在头部布局上面
多中不同的item如何实现?
多条目item与addHeaderView结合的时候,局部刷新notifyItemChanged控制某个view显示隐藏无效--没反应动静;用notifyDataSetChanged全局刷新也无效;用notifyItemChangedWrapper局部刷新错位;麻烦博主给下答复!谢谢
当一个页面有上下两个recyclerview时候,上面是gridmanager 下面是linmanager ,当页面被销毁(旋转屏幕时),上面grid的就是显示乱, 就是每个item的高度都会变成屏幕的高,上下两个recyclerview的高均设置为 wrap ,用原生的写法是完全没问题的
wen load https://jitpack.io/cn/bingoogolapple/bga-baseadapter/2.0.0/bga-baseadapter-2.0.0.pom
tips Repo not found or no token provided
由于需要去掉bgaphotopicker的依赖,将bgaadapter 拷贝源码到bgaphotopicker的library中,包名不变,编译databind出错,提示log如下。
D:\AndroidProject\BGAPhotoPicker-Android\library\src\main\java\cn\bingoogolapple\androidcommon\adapter\BGABindingRecyclerViewAdapter.java:91: 错误: 找不到符号
binding.setVariable(cn.bingoogolapple.androidcommon.adapter.BR.viewHolder, viewHolder);
^
符号: 类 BR
位置: 程序包 cn.bingoogolapple.androidcommon.adapter
D:\AndroidProject\BGAPhotoPicker-Android\library\src\main\java\cn\bingoogolapple\androidcommon\adapter\BGABindingRecyclerViewAdapter.java:92: 错误: 找不到符号
binding.setVariable(cn.bingoogolapple.androidcommon.adapter.BR.model, model);
^
符号: 类 BR
位置: 程序包 cn.bingoogolapple.androidcommon.adapter
D:\AndroidProject\BGAPhotoPicker-Android\library\src\main\java\cn\bingoogolapple\androidcommon\adapter\BGABindingRecyclerViewAdapter.java:93: 错误: 找不到符号
binding.setVariable(cn.bingoogolapple.androidcommon.adapter.BR.itemEventHandler, mItemEventHandler);
^
符号: 类 BR
位置: 程序包 cn.bingoogolapple.androidcommon.adapter
错误位置
B binding = viewHolder.getBinding();
binding.setVariable(cn.bingoogolapple.androidcommon.adapter.BR.viewHolder, viewHolder);
binding.setVariable(cn.bingoogolapple.androidcommon.adapter.BR.model, model);
binding.setVariable(cn.bingoogolapple.androidcommon.adapter.BR.itemEventHandler, mItemEventHandler);
您好,27.1.1版本的RecyclerView新增了一个ListAdapter,主是用与RecyclerView的局部更新,从而提高页面刷新效率.希望作者可以扩展一下BGARecyclerViewAdapter支持ListAdapter的功能
BGAGridDivider中的newInstanceWithSpaceDp()方法不是静态,
无法使用该方法获取到divider
你好,在尝试使用您的适配器库 加载嵌套ListView时,对ViewHolderHelper扩充了一点设置子ListView的方法如下:
/**
*
* @param viewId
* @return
*/
public BGAViewHolderHelper setChildListView(@idres int viewId){
childListView = (ListView) getView(viewId);
return this;
}
/**
* @param childListViewAdapter
* @return
*/
public BGAViewHolderHelper setChildListViewAdapter(BGAAdapterViewAdapter childListViewAdapter){
this.childListView.setAdapter(childListViewAdapter);
return this;
}
/**
* 设置子listView 的selector
* @param drawable
* @return
*/
public BGAViewHolderHelper setChildListViewSelector(Drawable drawable){
this.childListView.setSelector(drawable);
return this;
}
public BGAViewHolderHelper setChildListViewDivider(Drawable divider){
this.childListView.setDivider(divider);
return this;
}
public BGAViewHolderHelper setChildListViewDividerHeight(int height){
this.childListView.setDividerHeight(height);
return this;
}
/**
* 在存在子ListView的情况下,子listview填充完数据之后 重新计算父listview高度
* @return
*/
public BGAViewHolderHelper resetListViewHeight(){
ViewUtil.setListViewHeightBasedOnChildren(this.childListView);
return this;
}
在fillData里设置子ListVIew相关信息:
@OverRide
protected void fillData(BGAViewHolderHelper viewHolderHelper, int position, Order model) {
viewHolderHelper.setText(R.id.orderNum,model.getNumber());
viewHolderHelper.setText(R.id.orderType,model.getType());
viewHolderHelper.setText(R.id.custName,model.getUserName());
viewHolderHelper.setText(R.id.custPhone,model.getUserPhone());
viewHolderHelper.setText(R.id.custAddress,model.getUserAddress());
viewHolderHelper.setText(R.id.deliTime, model.getDeliTime());
viewHolderHelper.setText(R.id.deliStatus,model.getDeliStatus());
_goodsAdapter = new GoodsAdapterTest(_context);//也是继承自BAGAdatperViewAdapter
_goodsAdapter.setDatas(model.getGoods());
viewHolderHelper.setChildListView(R.id.goods_list)
.setChildListViewAdapter(_goodsAdapter)
// .setChildListViewSelector(new ColorDrawable(Color.WHITE))
.setChildListViewDivider(new ColorDrawable(Color.WHITE))
.setChildListViewDividerHeight(1)
.resetListViewHeight();
}现在的疑问是 如何把子ListView的item点击事件 传递到activity,因为子ListView需要多个adapter,直接把_goodsAdapter透给activity行不通,有什么建议吗
请问适配了androdx了吗
gradle.properties文件中添加android.databinding.enableV2=true后,build之后跳出没有类的错误
2019-03-07 10:33:22.598 4798-4798/cn.bingoogolapple.baseadapter.demo E/AndroidRuntime: FATAL EXCEPTION: main
Process: cn.bingoogolapple.baseadapter.demo, PID: 4798
java.lang.NullPointerException: Attempt to read from field 'java.util.List cn.bingoogolapple.baseadapter.demo.model.BannerModel.imgs' on a null object reference
at cn.bingoogolapple.baseadapter.demo.ui.fragment.RvBindingFragment$8.onResponse(RvBindingFragment.java:214)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:793)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:173)
at android.app.ActivityThread.main(ActivityThread.java:6698)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
BGABaseAdapterUtil 获取 Application时不要调用隐藏 API;
public class BGABaseAdapterUtil {
private static Application sApp;
static {
Application app = null;
try {
app = (Application) Class.forName("android.app.AppGlobals").getMethod("getInitialApplication").invoke(null);
if (app == null)
throw new IllegalStateException("Static initialization of Applications must be on main thread.");
} catch (final Exception e) {
Log.e(BGABaseAdapterUtil.class.getSimpleName(), "Failed to get current application from AppGlobals." + e.getMessage());
try {
app = (Application) Class.forName("android.app.ActivityThread").getMethod("currentApplication").invoke(null);
} catch (final Exception ex) {
Log.e(BGABaseAdapterUtil.class.getSimpleName(), "Failed to get current application from ActivityThread." + e.getMessage());
}
} finally {
sApp = app;
}
}
}
建议让调用者传过来吧。这样很容易出问题。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.