大佬教程收集整理的这篇文章主要介绍了android – 想要实现notifyDataSetChanged或autorefresh到我的RecyclerView但它无法正常工作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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
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,请注明来意。