Android ';无法转换为';自定义适配器中出现错误

Android ';无法转换为';自定义适配器中出现错误,android,android-fragments,Android,Android Fragments,我有一个带有slidemenu的应用程序,其中有一些片段 我使用了两个自定义适配器,它们都是相同的代码,并且其中只有一个具有比另一个多的映像 customadapter文件是: package ir.monocode.az; import ir.monocode.az.R; import java.util.ArrayList; import android.content.Context; import android.content.res.Resources; import andr

我有一个带有slidemenu的应用程序,其中有一些片段

我使用了两个自定义适配器,它们都是相同的代码,并且其中只有一个具有比另一个多的映像

customadapter文件是:

package ir.monocode.az;

import ir.monocode.az.R;

import java.util.ArrayList;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

/********* Adapter class extends with BaseAdapter and implements with OnClickListener ************/
public class CustomAdapter extends BaseAdapter implements OnClickListener {

    /*********** Declare Used Variables *********/
    private Context activity;
    private ArrayList data;
    private static LayoutInflater inflater=null;
    public Resources res;
    CatsModel tempValues=null;
    int i=0;
    Context context; 
    Typeface face;

    /*************  CustomAdapter Constructor *****************/
    public CustomAdapter(Context context, ArrayList d,Resources resLocal) {

        /********** Take passed values **********/
        activity = context;
        data=d;
        res = resLocal;

        /***********  Layout inflator to call external xml layout () **********************/
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    /******** What is the size of Passed Arraylist Size ************/
    public int getCount() {

        if(data.size()<=0)
            return 1;
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    /********* Create a holder to contain inflated xml file elements ***********/
    public static class ViewHolder{

        public TextView text;
        public ImageView image;

    }

    /*********** Depends upon data size called for each row , Create each ListView row ***********/
    public View getView(int position, View convertView, ViewGroup parent) {

        View vii=convertView;
        ViewHolder holder;

        if(convertView==null){ 

            /********** Inflate tabitem.xml file for each row ( Defined below ) ************/
            vii = inflater.inflate(R.layout.catitems, null); 


            /******** View Holder Object to contain tabitem.xml file elements ************/
            holder=new ViewHolder();
            holder.text=(TextView)vii.findViewById(R.id.ctextView1);
            holder.image=(ImageView)vii.findViewById(R.id.cimageView2);

            Typeface typeface = Typeface.createFromAsset(holder.text.getContext().getAssets(),
                    "fonts/B YEKAN.TTF");
            holder.text.setTypeface(typeface);
            /************  Set holder with LayoutInflater ************/
            vii.setTag(holder);
        }
        else  
            holder=(ViewHolder)vii.getTag();

        if(data.size()<=0)
        {
            holder.text.setText("No Data");

        }
        else
        {
            /***** Get each Model object from Arraylist ********/
            tempValues=null;
            tempValues = (CatsModel) data.get(position);

            /************  Set Model values in Holder elements ***********/
             holder.text.setText(tempValues.getCatName());
             int resID = activity.getResources().getIdentifier("icon"+tempValues.getImage() , "drawable", activity.getPackageName());
             holder.image.setImageResource(resID);

             /******** Set Item Click Listener for LayoutInflater for each row ***********/
             vii.setOnClickListener(new OnItemClickListener(position));
        }
        return vii;
    }

    @Override
    public void onClick(View v) {
            Log.v("CustomAdapter", "=====Row button clicked");


    }

    /********* Called when Item click in ListView ************/
    private class OnItemClickListener  implements OnClickListener{           
        private int mPosition;

        OnItemClickListener(int position){
         mPosition = position;
       }

       @Override
       public void onClick(View arg0) {
           MainActivity sct = (MainActivity)activity;
        sct.customonItemClick(mPosition);

       }



    }   
}
我必须如何解决我的问题? 你能帮我吗?
谢谢你

你可以用多态性来解决。用接口
BaseAdapter

类似这样(您的相关代码没有发布,所以这只是一个猜测)

变成

 BaseAdapter it = retrieveMyCustomAdapter();

一种更正式的方法是声明一个扩展BaseAdapter的抽象类,并使CatsModel和ArticlesModel都继承这个新类。

我建议您编辑这个问题,使类强制转换错误消息接近顶部,以便人们立即看到问题所在,然后决定是否查看代码。此外,尽量不要像在儿童聊天室一样写作,也就是说,在需要的时候使用大写字母。如果可用,从堆栈跟踪中再发布几行。所有这些都将为您带来更多的成功:-)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/cLinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:gravity="right"
    android:orientation="vertical"
    android:paddingBottom="10dp" >

    <LinearLayout
        android:id="@+id/cLinearLayout2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:gravity="right" >

        <TextView
            android:id="@+id/ctextView1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical|center_horizontal"
            android:paddingRight="10dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#215e76"
            android:textSize="20sp" />

        <ImageView
            android:id="@+id/cimageView2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:maxHeight="20dp"
            android:maxWidth="20dp"
            android:padding="5dp"
            android:src="@drawable/ic_launcher" />

        <ImageView
            android:id="@+id/cimageView1"
            android:layout_width="10dp"
            android:layout_height="match_parent"
            android:background="#ffc20e" />

    </LinearLayout>

</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/aLinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:gravity="right"
    android:orientation="vertical"
    android:paddingBottom="10dp" >

    <LinearLayout
        android:id="@+id/aLinearLayout3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:gravity="right" >

        <TextView
            android:id="@+id/atextView1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical|center_horizontal"
            android:paddingRight="10dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#215e76"
            android:textSize="20sp" />

        <ImageView
            android:id="@+id/aimageView1"
            android:layout_width="10dp"
            android:layout_height="match_parent"
            android:background="#ffc20e" />

    </LinearLayout>

</LinearLayout>
java.lang.ClassCastException: ir.monocode.az.ArticlesModel cannot be cast to ir.monocode.az.CatsModel
CatsModel it = retrieveMyCustomAdapter();
 BaseAdapter it = retrieveMyCustomAdapter();