android – 回收视图膨胀不同的行: – 在绑定数据时获取异常

android – 回收视图膨胀不同的行: – 在绑定数据时获取异常,第1张

概述我正在使用不同的项目膨胀来处理Recyceview.当我没有绑定RecycleView的onBindViewHolder方法上的数据时它不会崩溃.. 但是当我绑定onBindViewHolder中的数据而不是我得到异常时,请检查我的代码并让我知道我在哪里做错了. package com.tv.practise.adapter; /** Created by Ravindra Kush 我正在使用不同的项目膨胀来处理RecycevIEw.当我没有绑定RecycleVIEw的onBindVIEwHolder方法上的数据时它不会崩溃..
但是当我绑定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 – 回收视图膨胀不同的行: – 在绑定数据时获取异常所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1121453.html

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

发表评论

登录后才能评论

评论列表(0条)

保存