但是当我绑定onBindVIEwHolder中的数据而不是我得到异常时,请检查我的代码并让我知道我在哪里做错了.
package com.tv.practise.adapter; /** Created by ravindra Kushwaha on 10/10/16. */public class RecycleDataAdapter extends RecyclerVIEw.Adapter<RecyclerVIEw.VIEwHolder> {private Context mContext;private ArrayList<RecycleBen> data;public static class SimpleText extends RecyclerVIEw.VIEwHolder { TextVIEw first_data_tv; public SimpleText(VIEw v) { super(v); this.first_data_tv = (TextVIEw) v.findVIEwByID(R.ID.first_data_tv); }}public class SimpleImage extends RecyclerVIEw.VIEwHolder { ImageVIEw second_data_iv; public SimpleImage(VIEw v) { super(v); this.second_data_iv = (ImageVIEw) v.findVIEwByID(R.ID.second_data_iv); }}public class SimpleImageWithText extends RecyclerVIEw.VIEwHolder { TextVIEw third_data_tv; ImageVIEw third_iv; public SimpleImageWithText(VIEw v) { super(v); this.third_data_tv = (TextVIEw) v.findVIEwByID(R.ID.third_data_tv); this.third_iv = (ImageVIEw) v.findVIEwByID(R.ID.third_iv); }}public RecycleDataAdapter(Context mContext,ArrayList<RecycleBen> data) { this.mContext = mContext; this.data = data;}@OverrIDepublic RecyclerVIEw.VIEwHolder onCreateVIEwHolder(VIEwGroup parent,int vIEwType) { int ListVIEwItemType = getItemVIEwType(vIEwType); VIEw itemVIEw; if(ListVIEwItemType==1) { itemVIEw = LayoutInflater.from(parent.getContext()) .inflate(R.layout.recycle_first_item,parent,false); return new SimpleText(itemVIEw ); } else if(ListVIEwItemType==2) { itemVIEw = LayoutInflater.from(parent.getContext()) .inflate(R.layout.recycle_fsecond_item,false); return new SimpleImage(itemVIEw); } else { itemVIEw = LayoutInflater.from(parent.getContext()) .inflate(R.layout.recycle_third_item,false); return new SimpleImageWithText(itemVIEw); }}@OverrIDepublic voID onBindVIEwHolder(RecyclerVIEw.VIEwHolder holder,int position) { RecycleBen bean = data.get(position); if(holder.getItemVIEwType()==1) { /////HERE I AM GETTING THE EXCEPTION WHILE BINdind DATA ((SimpleText)holder).first_data_tv.setText(bean.getname()); } else if(holder.getItemVIEwType()==2) { } else { /////HERE I AM GETTING THE EXCEPTION WHILE BINdind DATA((SimpleImageWithText)holder).third_data_tv.setText(bean.getname()); }}@OverrIDepublic int getItemVIEwType(int position) { return Integer.parseInt(data.get(position).getType_row());}@OverrIDepublic int getItemCount() { return data.size(); }}
我绑定数据时的例外情况如下: –
3758-3758/com.tv.practise E/AndroIDRuntime﹕ FATAL EXCEPTION: main Process: com.tv.practise,PID: 3758 java.lang.classCastException: com.tv.practise.adapter.RecycleDataAdapter$SimpleImageWithText cannot be cast to com.tv.practise.adapter.RecycleDataAdapter$SimpleText at com.tv.practise.adapter.RecycleDataAdapter.onBindVIEwHolder(RecycleDataAdapter.java:101) at androID.support.v7.Widget.RecyclerVIEw$Adapter.onBindVIEwHolder(RecyclerVIEw.java:5471) at androID.support.v7.Widget.RecyclerVIEw$Adapter.bindVIEwHolder(RecyclerVIEw.java:5504) at androID.support.v7.Widget.RecyclerVIEw$Recycler.getVIEwForposition(RecyclerVIEw.java:4741) at androID.support.v7.Widget.RecyclerVIEw$Recycler.getVIEwForposition(RecyclerVIEw.java:4617) at androID.support.v7.Widget.linearlayoutmanager$LayoutState.next(linearlayoutmanager.java:1994) at androID.support.v7.Widget.linearlayoutmanager.layoutChunk(linearlayoutmanager.java:1390) at androID.support.v7.Widget.linearlayoutmanager.fill(linearlayoutmanager.java:1353) at androID.support.v7.Widget.linearlayoutmanager.onLayoutChildren(linearlayoutmanager.java:574) at androID.support.v7.Widget.RecyclerVIEw.dispatchLayoutStep2(RecyclerVIEw.java:3028) at androID.support.v7.Widget.RecyclerVIEw.onMeasure(RecyclerVIEw.java:2625) at androID.vIEw.VIEw.measure(VIEw.java:18804) at androID.vIEw.VIEwGroup.measureChilDWithmargins(VIEwGroup.java:5954) at androID.Widget.linearLayout.measureChildBeforeLayout(linearLayout.java:1465) at androID.Widget.linearLayout.measureVertical(linearLayout.java:748) at androID.Widget.linearLayout.onMeasure(linearLayout.java:630) at androID.vIEw.VIEw.measure(VIEw.java:18804) at androID.vIEw.VIEwGroup.measureChilDWithmargins(VIEwGroup.java:5954) at androID.Widget.FrameLayout.onMeasure(FrameLayout.java:194) at androID.vIEw.VIEw.measure(VIEw.java:18804) at androID.vIEw.VIEwGroup.measureChilDWithmargins(VIEwGroup.java:5954) at androID.Widget.linearLayout.measureChildBeforeLayout(linearLayout.java:1465) at androID.Widget.linearLayout.measureVertical(linearLayout.java:748) at androID.Widget.linearLayout.onMeasure(linearLayout.java:630) at androID.vIEw.VIEw.measure(VIEw.java:18804) at androID.vIEw.VIEwGroup.measureChilDWithmargins(VIEwGroup.java:5954) at androID.Widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.androID.internal.policy.PhoneWindow$DecorVIEw.onMeasure(PhoneWindow.java:2643) at androID.vIEw.VIEw.measure(VIEw.java:18804) at androID.vIEw.VIEwRootImpl.performMeasure(VIEwRootImpl.java:2112) at androID.vIEw.VIEwRootImpl.measureHIErarchy(VIEwRootImpl.java:1228) at androID.vIEw.VIEwRootImpl.performTraversals(VIEwRootImpl.java:1464) at androID.vIEw.VIEwRootImpl.doTraversal(VIEwRootImpl.java:1119) at androID.vIEw.VIEwRootImpl$TraversalRunnable.run(VIEwRootImpl.java:6060) at androID.vIEw.Choreographer$CallbackRecord.run(Choreographer.java:858) at androID.vIEw.Choreographer.doCallbacks(Choreographer.java:670) at androID.vIEw.Choreographer.doFrame(Choreographer.java:606) at androID.vIEw.Choreographer$FramedisplayEventReceiver.run(Choreographer.java:844) at androID.os.Handler.handleCallback(Handler.java:746) at androID.os.Handler.dispatchMessage(Handler.java:95) at androID.os.Looper.loop(Looper.java:148) at androID.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:618)解决方法 原因是isCreateVIEwHolder(VIEwGroup parent,int vIEwType).参数是视图类型,但不是位置.使用int ListVIEwItemType = getItemVIEwType(vIEwType)不正确,因为位置应该传递给getItemVIEwType.
简而言之,您应该直接使用vIEwType并删除onCreateVIEwHolder中的ListVIEwItemType.
总结以上是内存溢出为你收集整理的android – 回收视图膨胀不同的行: – 在绑定数据时获取异常全部内容,希望文章能够帮你解决android – 回收视图膨胀不同的行: – 在绑定数据时获取异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)