android – 想要实现notifyDataSetChanged或autorefresh到我的RecyclerView但它无法正常工作

android – 想要实现notifyDataSetChanged或autorefresh到我的RecyclerView但它无法正常工作,第1张

概述我想实现notifyDataSetChanged或自动刷新到我的RecyclerView,但它无法正常工作,我已经尝试了很多方法来解决这个问题但不幸的是所有方法最终都崩溃,有些方法无法正常工作.我是新手,所以,PLZ帮助我解决这个问题. 并且 想知道,这是创建DataAapter引用的正确方法吗? DataAdapter dataadaper; (完整代码如下) 如果不是那么怎么样? 使用此代码( 我想实现notifyDataSetChanged或自动刷新到我的RecyclerVIEw,但它无法正常工作,我已经尝试了很多方法来解决这个问题但不幸的是所有方法最终都崩溃,有些方法无法正常工作.我是新手,所以,PLZ帮助我解决这个问题.
并且
想知道,这是创建DataAapter引用的正确方法吗?

DataAdapter dataadaper; (完整代码如下)

如果不是那么怎么样?

使用此代码(下面给出)我的应用程序在打开时崩溃,想知道我做错了什么,这样我就可以从错误中吸取教训. :) 谢谢

public class DataAdapter extends RecyclerVIEw.Adapter<DataAdapter.VIEwHolder> {public static String Camp_ID[] = new String[15];private ArrayList<AndroIDVariables> androID;private Context context;AnimatorSet set;DataAdapter dataAdapterString url = "_URL";public DataAdapter(ArrayList<AndroIDVariables> androID) {    this.context = context;    this.androID = androID;    if (OffersFragment.srl.isRefreshing()) {        OffersFragment.srl.setRefreshing(false);    }}@OverrIDepublic DataAdapter.VIEwHolder onCreateVIEwHolder(VIEwGroup vIEwGroup,int i) {    if (androID.get(i).getCamp_ID().equals("1")) {        VIEw vIEw = LayoutInflater.from(vIEwGroup.getContext()).inflate(R.layout.item_List_offer_big,vIEwGroup,false);        return new VIEwHolder(vIEw);    }    VIEw vIEw = LayoutInflater.from(vIEwGroup.getContext()).inflate(R.layout.item_List,false);    return new VIEwHolder(vIEw);}@OverrIDepublic int getItemVIEwType(int i) {    return i;}public voID myNotifyDataSetChanged(){    this.notifyDataSetChanged();}@OverrIDepublic voID onBindVIEwHolder(VIEwHolder vIEwHolder,int i) {    Context context = vIEwHolder.p_img.getContext();    vIEwHolder.p_name.setText(androID.get(i).getname());    vIEwHolder.p_quant.setText(androID.get(i).getVer());    vIEwHolder.p_cat.setText(androID.get(i).getAPI());    vIEwHolder.p_earn.setText("₹" + androID.get(i).getCash());    Camp_ID[i] = androID.get(i).getCamp_ID();    Picasso.with(context).load(url + androID.get(i).getimage()).into(vIEwHolder.p_img);    dataAdapter.myNotifyDataSetChanged();}@OverrIDepublic int getItemCount() {    return androID.size();}public class VIEwHolder extends RecyclerVIEw.VIEwHolder {    private TextVIEw p_name,p_quant,p_cat,p_earn;    private ImageVIEw p_img,plus;    public VIEwHolder(VIEw vIEw) {        super(vIEw);        p_name = (TextVIEw) vIEw.findVIEwByID(R.ID.List_product);        p_quant = (TextVIEw) vIEw.findVIEwByID(R.ID.List_quantity);        p_cat = (TextVIEw) vIEw.findVIEwByID(R.ID.List_category);        p_earn = (TextVIEw) vIEw.findVIEwByID(R.ID.earning);        p_img = (ImageVIEw) vIEw.findVIEwByID(R.ID.List_productimg);        plus = (ImageVIEw) vIEw.findVIEwByID(R.ID.plusoffers);        plus.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                plus.setimageResource(R.drawable.check_small);            //DO_ANY_THING            }        });    }}}

LOG

04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime: FATAL EXCEPTION: main04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime: Process:   earn.free.cashback,PID: 2435704-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:   java.lang.NullPointerException: Attempt to invoke virtual method 'voID     earn.free.cashback.DataAdapter.myNotifyDataSetChanged()' on a null   object reference04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at earn.free.cashback.DataAdapter.onBindVIEwHolder(DataAdapter.java:94)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at  earn.free.cashback.DataAdapter.onBindVIEwHolder(DataAdapter.java:30)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at  androID.support.v7.Widget.RecyclerVIEw$Adapter.onBindVIEwHolder(RecyclerVIEw.jav     a:5453) 04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at  androID.support.v7.Widget.RecyclerVIEw$Adapter.bindVIEwHolder(RecyclerVIEw.java:     5486)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at   androID.support.v7.Widget.RecyclerVIEw$Recycler.getVIEwForposition(RecyclerVIEw.    java:4723)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at   androID.support.v7.Widget.RecyclerVIEw$Recycler.getVIEwForposition(RecyclerVIEw.    java:4599)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v7.Widget.linearlayoutmanager$LayoutState.next(linearLayoutManag    er.java:1988)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v7.Widget.linearlayoutmanager.layoutChunk(linearlayoutmanager.ja    va:1384)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v7.Widget.linearlayoutmanager.fill(linearlayoutmanager.java:1347    )04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v7.Widget.linearlayoutmanager.onLayoutChildren(linearLayoutManag    er.java:574)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at  androID.support.v7.Widget.RecyclerVIEw.dispatchLayoutStep2(RecyclerVIEw.java:300    3)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v7.Widget.RecyclerVIEw.dispatchLayout(RecyclerVIEw.java:2881)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v7.Widget.RecyclerVIEw.onLayout(RecyclerVIEw.java:3265)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v4.Widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:59    6)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at     androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.layoutChildren(FrameLayout.java:579)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.onLayout(FrameLayout.java:514)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.layoutChildren(FrameLayout.java:579)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.onLayout(FrameLayout.java:514)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.layoutChildren(FrameLayout.java:579)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.onLayout(FrameLayout.java:514) 04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.design.Widget.CoordinatorLayout.layoutChild(CoordinatorLayout.ja    va:1087)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at  androID.support.design.Widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.    java:797)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at  androID.support.design.Widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:    811)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at   androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.v4.vIEw.VIEwPager.onLayout(VIEwPager.java:1695)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.support.design.Widget.headerScrollingVIEwBehavior.layoutChild(headerScro    llingVIEwBehavior.java:122)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at  androID.support.design.Widget.VIEwOffsetBehavior.onLayoutChild(VIEwOffsetBehavio    r.java:42)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at    androID.support.design.Widget.AppbarLayout$ScrollingVIEwBehavior.onLayoutChild(A    ppbarLayout.java:1149)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at   androID.support.design.Widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:    810)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at     androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at   androID.support.v4.Widget.DrawerLayout.onLayout(DrawerLayout.java:1187)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.layoutChildren(FrameLayout.java:579)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.FrameLayout.onLayout(FrameLayout.java:514)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEw.layout(VIEw.java:15671)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.vIEw.VIEwGroup.layout(VIEwGroup.java:5038)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.linearLayout.setChildFrame(linearLayout.java:1703)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.linearLayout.layoutVertical(linearLayout.java:1557)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:     at androID.Widget.linearLayout.onLayout(linearLayout.java:1466)04-02 02:17:11.820 24357-24357/? E/AndroIDRuntime:  at androID.vIEw.VIEw.l
解决方法 Shadab的信息是正确的,但是关于初始化,我建议从DataAdapter类中删除dataAdapter变量并将其添加到您打算访问它的活动中;在onCreate()中初始化它.

public voID onCreate(Bundle savedInstanceState) {    //Initialize data set    myAndroIDData = new ArrayList<>();    //Initialize data adapter and assign it to a recycler vIEw    myDataAdapter = new DataAdapter(myAndroIDData);    myRecyclerVIEw = (RecyclerVIEw) findVIEwByID(R.ID.recycler_vIEw);    myRecyclerVIEw.setAdapter(myDataAdapter);    super.onCreate(savedInstanceState);}

在myAndroIDData中添加或删除项目后,请调用myDataAdapter.notifyDataSetChanged();刷新你的显示器.
由于notifyDataSetChanged()是父级RecyclerVIEw类中的公共函数,因此不需要myNotifyDataSetChanged()函数,可以将其删除.避免在创建适配器后调用myAndroIDData = new ArrayList< AndroIDVariables>(),因为dataAdapter.androID仍会引用您初始化它的列表,而notifyDataSetChanged()将不再按您的意愿工作.

还建议您不要从onBindVIEwHolder()调用notifyDataSetChanged(). onBindVIEwHolder只应用于设置视图持有者中显示的内容,而不能用于设置RecyclerVIEw本身.

将onBindVIEwHolder()函数更新为

@OverrIDepublic voID onBindVIEwHolder(VIEwHolder vIEwHolder,int i) {    Context context = vIEwHolder.p_img.getContext();    vIEwHolder.p_name.setText(androID.get(i).getname());    vIEwHolder.p_quant.setText(androID.get(i).getVer());    vIEwHolder.p_cat.setText(androID.get(i).getAPI());    vIEwHolder.p_earn.setText("₹" + androID.get(i).getCash());    Camp_ID[i] = androID.get(i).getCamp_ID();    Picasso.with(context).load(url + androID.get(i).getimage()).into(vIEwHolder.p_img);}
总结

以上是内存溢出为你收集整理的android – 想要实现notifyDataSetChanged或autorefresh到我的RecyclerView但它无法正常工作全部内容,希望文章能够帮你解决android – 想要实现notifyDataSetChanged或autorefresh到我的RecyclerView但它无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125774.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存