Giter Site home page Giter Site logo

byteam / superadapter Goto Github PK

View Code? Open in Web Editor NEW
639.0 36.0 123.0 309 KB

[Deprecated]. 🚀 Adapter(BaseAdapter, RecyclerView.Adapter) wrapper for Android. 一个Adapter同时适用RecyclerView、ListView、GridView等。

Java 100.00%
android recyclerview adapter listview gridview multiple-type

superadapter's People

Contributors

chenenyu avatar kassadin avatar mondapaco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

superadapter's Issues

关于item的填充损耗问题

在源码中我看到onCreate()方法的具体实现的是偶发现,每一次都会根据layoutId来inflate一个view,但是每次inflate这个view就会产生损耗,而且能够复用convertView的时候也会inflate这个view。

建议增加一个 清空数据重新添加数据的方法

有一种场景是大多数人都会遇到,下拉刷新的时候....会先清空适配器里面的所有 数据,然后在重新添加最新的数据....SuperAdapter 就会先clear notifyDataSetChanged一次,然后addall 会在次调用notifyDataSetChanged 一次...所以添加一个这样的方法可以少调用一次notifyDataSetChanged

使用SuperAdapter.add(...)或addAll(...)更新数据异常闪退

使用demo中的MultipleAdapter,在获取数据后调用adapter.add(...)或adapter.addAll(...)更新数据一直报如下异常

java.lang.RuntimeException: Failed to resolve attribute at index 6
at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:636)
at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6486)
at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6654)
at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1895)
at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1807)
at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:62)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:827)
at android.view.LayoutInflater.inflate(LayoutInflater.java:523)
at android.view.LayoutInflater.inflate(LayoutInflater.java:425)
at com.lichfaker.lib.common.views.refresh.SuperAdapter.onCreate(SuperAdapter.java:47)
at com.lichfaker.lib.common.views.refresh.SuperAdapter.onCreate(SuperAdapter.java:17)
at com.lichfaker.lib.common.views.refresh.internal.BaseSuperAdapter.onCreateViewHolder(BaseSuperAdapter.java:287)
at com.lichfaker.lib.common.views.refresh.internal.BaseSuperAdapter.onCreateViewHolder(BaseSuperAdapter.java:28)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5464)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4689)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4599)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1988)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1384)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1347)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:574)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3003)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2881)
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1457)
at android.support.v7.widget.RecyclerView.access$400(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:285)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:799)
at android.view.Choreographer.doCallbacks(Choreographer.java:612)
at android.view.Choreographer.doFrame(Choreographer.java:580)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:785)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:967)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

LinearLayoutManager footView宽度不能占全屏

LinearLayoutManager footView宽度不能占全屏

StaggeredGridLayoutManager SGlayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
代替后上拉加载更多后报错,LinearLayoutManager 可以正常上拉加载更多
java.lang.ArrayIndexOutOfBoundsException
src.length=11 srcPos=10 dst.length=11 dstPos=20 length=-9
java.lang.System.arraycopy(Native Method)

3.1->3.2 更新了什么东西?

之前用的 3.0.0 直接更新到3.3下拉刷新出错了,
列表增加了Header,

试了几次之后,发现是 3.1 - > 3.2 出错。

image

最新版怎么添加 - -

compile 'org.byteam.superadapter:superadapter:3.0.0-alpha1'
或者
compile 'org.byteam.superadapter:superadapter:3.0.0'

都不可以。

RecyclerView怎样更改当前item的值?

在弄 购物车点击增加num++,想要保存当前的值
以下方法会报错
item.setNum(num);
set(layoutPosition,item);
以下方法没效果
mData.get(layoutPosition).setNum(num);
本来3.1版本,更换3.6版本还是这样

为什么没有setNewData这类方法?

分页加载,下拉刷新,把原先的数据全部移除,再添加新内容。
只能用clear()再addAll()曲线救国,而且clear()会报错

Inconsistency detected. Invalid view holder adapter positionViewHolder

只能再重新调用下notifyDataSetChanged()才避免报错。
相关代码如下:

@Override
    public void setData(List<Article> data) {
        if (page == 0) {
            mArticles.clear();
            mAdapter.clear();
            mAdapter.notifyDataSetChanged();//不要这句会报错
        }
        mArticles.addAll(data);
        mAdapter.addAll(data);
        page++;
        stopRefreLoad();
    }

提个场景不知道这样的改进好不好

fragment中含list使用superAdapter 发起请求迅速finish activity会报"getSystemService"on a null object reference明显是context为空了导致LayoutInflater.from(context)的crash

改进方法:在LayoutInflater.from(context)前判空 否则的话我现在都是在new xxAdapter前判空 还挺麻烦的

Note: Do not bind click listener in onBind(). 不要在onBind()中绑定点击事件.

If you want to bind click listener to a subview of itemView:
item中的某个子view需要绑定点击事件:

   @Override
    public SuperViewHolder onCreate(View convertView, ViewGroup parent, int viewType) {
        SuperViewHolder holder = super.onCreate(convertView, parent, viewType);
        holder.findViewById(id).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // just like this, good luck!
            }
        });
        return holder;
    }

addAll 方法里面增加一个清空并添加的方法

addAll(List items,Boolean isClear)

如果isClear是true,那么就先把之前的items清空,然后在把最新的items赋值给items。

这个方法在下拉刷新和上拉加载的时候,用的特别平凡。 下拉刷新的时候就得把之前的集合全清空,然后把最新的数据赋值给List items,而当上拉加载的时候就是不清空,在老数据之后添加数据

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.