Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 想要实现notifyDataSetChanged或autorefresh到我的RecyclerView但它无法正常工作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想实现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 dataAdapter

String url = "_URL";



public DataAdapter(ArrayList<AndroidVariables> android) {
    this.context = context;
    this.android = android;
    if (OffersFragment.srl.isrefreshing()) {
        OffersFragment.srl.setrefreshing(false);
    }
}


@Override
public 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);
}

@Override
public int getItemViewType(int i) {
    return i;
}


public void myNotifyDataSetChanged()
{
    this.notifyDataSetChanged();

}

@Override
public 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();
}

@Override
public 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.setImage@R_616_5550@e(R.drawable.check_small);
            //DO_ANY_THING
            }
        });
    }
}
}

LOG

04-02 02:17:11.820 24357-24357/? E/AndroidRuntime: FATAL EXCEPTION: main
04-02 02:17:11.820 24357-24357/? E/AndroidRuntime: Process:   earn.free.cashBACk,PID: 24357
04-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 reference
04-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中添加删除项目后,请@L_144_21@myDataAdapter.notifyDataSetChanged();刷新你的显示器.
由于notifyDataSetChanged()是父级RecyclerView类中的公共函数,因此不需要myNotifyDataSetChanged()函数,可以将其删除.避免在创建适配器后@L_144_21@myAndroidData = new ArrayList< AndroidVariables>(),因为dataAdapter.android仍会引用您初始化它的列表,而notifyDataSetChanged()将不再按您的意愿工作.

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

将onBindViewHolder()函数更新为

@Override
public 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但它无法正常工作所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。