2013-05-26 18 views
0

我想填充SQLite數據庫的列表視圖,但類轉換異常。這是我的logcat:java.lang.classcastexception:java.util.ArrayList

05-26 09:03:40.376: E/AndroidRuntime(309): Caused by: java.lang.ClassCastException: java.util.ArrayList 
05-26 09:03:40.376: E/AndroidRuntime(309): at com.example.packinfo.MainActivity.displayListview(MainActivity.java:58) 
05-26 09:03:40.376: E/AndroidRuntime(309): at com.example.packinfo.MainActivity.onCreate(MainActivity.java:27) 
05-26 09:03:40.376: E/AndroidRuntime(309): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-26 09:03:40.376: E/AndroidRuntime(309): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 

這裏是我的代碼:

MainActivity.java:

DatabaseHandler.java:

package com.example.packinfo; 

import java.util.ArrayList; 
import java.util.List; 

import com.example.packinfo.Package; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DatabaseHandler extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 1; 

    private static final String DATABASE_NAME="Package_DB"; 

    private static final String TABLE_PACKAGE = "Package"; 

    private static final String KEY_PKG_ID= "pkgid"; 
    private static final String KEY_PKG_TYPE= "pkgtyp"; 
    private static final String KEY_PKG_NAME ="pkgname"; 
    private static final String KEY_NO_OF_FREE_ITEMS= "nitems"; 
    private static final String KEY_DURATION ="dur"; 
    private static final String KEY_CHARGES ="charge"; 

    public DatabaseHandler(Context context){ 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    public void onCreate(SQLiteDatabase db){ 


     String createPKGTABLE = "CREATE TABLE " + TABLE_PACKAGE + "(" 
       + KEY_PKG_ID + " TEXT PRIMARY KEY," + KEY_PKG_TYPE + " TEXT," 
       + KEY_PKG_NAME + " TEXT," + KEY_NO_OF_FREE_ITEMS + " INTEGER," 
       + KEY_DURATION + " INTEGER," + KEY_CHARGES + " INTEGER " + ")"; 
      db.execSQL(createPKGTABLE); 

    } 
     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 

      db.execSQL("DROP TABLE IF EXISTS"+ TABLE_PACKAGE); 
      onCreate(db); 

     } 

     public void addPackage(Package pkg) 
     { 

      SQLiteDatabase db = this.getWritableDatabase(); 

      ContentValues values= new ContentValues(); 
      values.put(KEY_PKG_ID, pkg.getPKG_ID()); 
      values.put(KEY_PKG_TYPE, pkg.getPKG_TYPE()); 
      values.put(KEY_PKG_NAME, pkg.getPKG_NAME()); 
      values.put(KEY_NO_OF_FREE_ITEMS, pkg.getPKG_ITEMS()); 
      values.put(KEY_DURATION, pkg.getPKG_DURATION()); 
      values.put(KEY_CHARGES, pkg.getPKG_CHARGES()); 

      db.insert(TABLE_PACKAGE, null, values); 
      db.close(); 

     } 


      public List<Package> getPackages() 
      { 
       List<Package> pkglist = new ArrayList<Package>(); 
       String selectquery ="SELECT * FROM "+TABLE_PACKAGE; 

       SQLiteDatabase db = this.getWritableDatabase(); 
       Cursor cursor = db.rawQuery(selectquery, null); 

       if(cursor.moveToFirst()) 
       { 
        do{ 

         Package pkg =new Package(); 

         pkg.setPKG_ID(cursor.getString(0)); 
         pkg.setPKG_TYPE(cursor.getString(1)); 
         pkg.setPKG_NAME(cursor.getString(2)); 
         pkg.setPKG_ITEMS(Integer.parseInt(cursor.getString(3))); 
         pkg.setPKG_DUARTION(Integer.parseInt(cursor.getString(4))); 
         pkg.setPKG_CHARGES(Float.parseFloat(cursor.getString(5))); 

         pkglist.add(pkg); 

        }while(cursor.moveToNext()); 
       } 
       return pkglist; 
      } 

     } 

Package.java:

package com.example.packinfo; 

public class Package { 

    String _PKG_ID; 
    String _PKG_TYPE; 
    String _PKG_NAME; 
    int _NO_OF_FREE_ITEMS; 
    int _DURATION; 
    float _CHARGES; 

    public Package(){} 

    public Package(String _PKG_ID, 
    String _PKG_TYPE, 
    String _PKG_NAME, 
    int _NO_OF_FREE_ITEMS, 
    int _DURATION, 
    float _CHARGES){ 

     this._PKG_ID= _PKG_ID; 
     this._PKG_TYPE= _PKG_TYPE; 
     this._PKG_NAME = _PKG_NAME; 
     this._NO_OF_FREE_ITEMS = _NO_OF_FREE_ITEMS; 
     this._DURATION= _DURATION; 
     this._CHARGES = _CHARGES; 
    } 

    public Package(String pkgtyp,String pkgname, int nitems, int dur, float charge) 
    { 

     this._PKG_TYPE= pkgtyp; 
     this._PKG_NAME = pkgname; 
     this._NO_OF_FREE_ITEMS = nitems; 
     this._DURATION= dur; 
     this._CHARGES= charge; 

    } 
    public String getPKG_ID() 
    { 
     return this._PKG_ID; 

    } 

    public void setPKG_ID(String pkgid) 
    { 

     this._PKG_ID= pkgid; 
    } 

    public String getPKG_TYPE() 
    { 
     return this._PKG_TYPE; 

    } 

    public void setPKG_TYPE(String pkgtyp) 
    { 

     this._PKG_TYPE= pkgtyp; 
    } 

    public String getPKG_NAME() 
    { 
     return this._PKG_NAME; 

    } 

    public void setPKG_NAME(String pkgname) 
    { 

     this._PKG_NAME= pkgname; 
    } 

    public int getPKG_ITEMS() 
    { 
     return this._NO_OF_FREE_ITEMS; 

    } 

    public void setPKG_ITEMS(int nitems) 
    { 

     this._NO_OF_FREE_ITEMS= nitems; 
    } 

    public int getPKG_DURATION() 
    { 
     return this._DURATION; 

    } 

    public void setPKG_DUARTION(int dur) 
    { 

     this._DURATION= dur; 
    } 
    public float getPKG_CHARGES() 
    { 
     return this._CHARGES; 

    } 

    public void setPKG_CHARGES(float charge) 
    { 

     this._CHARGES= charge; 
    }  
    } 

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 


    <TextView android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:padding="10dp" 
    android:text="@string/some_text" android:textSize="20sp" /> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</RelativeLayout> 

list_row.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_selector" 
    android:orientation="horizontal" 
    android:padding="5dip" > 


    <!-- ListRow Left sied Thumbnail image !--> 
    <LinearLayout android:id="@+id/thumbnail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="3dip" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/image_bg" 
     android:layout_marginRight="5dip"> 

     <ImageView 
      android:id="@+id/list_image" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:src="@drawable/sms" android:contentDescription="@string/todo"/> 





    </LinearLayout> 


    <!-- Title Of Package--> 
    <TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:text="@string/pkg_title" 
     android:textColor="#040404" 
     android:typeface="sans" 
     android:textSize="15sp" 
     android:textStyle="bold"/> 

    <!--No of Free Items--> 
    <TextView 
     android:id="@+id/nsms" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/name" 
     android:textColor="#343434" 
     android:textSize="12sp" 
     android:layout_marginTop="1dip" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:text="@string/nitems" /> 

    <!-- Duration --> 
    <TextView 
     android:id="@+id/duration" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@id/name" 
     android:gravity="right" 
     android:text="@string/dur" 
     android:layout_marginRight="5sp" 
     android:textSize="15sp" 
     android:textColor="#10bcc9" 
     android:textStyle="bold"/> 

    <!-- Charges --> 
    <TextView 
     android:id="@+id/spcharges" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/chargesofpkg" 
     android:gravity="right" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true"/> 

</RelativeLayout> 

任何幫助將高度讚賞。

+0

您沒有粘貼MainActivity的代碼,其中拋出異常的類 –

+1

是的,看起來您的問題似乎在MainActivity中的displayListView()中,但我們看不到那是什麼問題。 – HalR

回答

0

看起來你的代碼在List和ArrayList之間變得混淆了。您正在創建一個ArrayList,並將其作爲List返回。你在什麼地方將它投影到displayListView中?你可能會拿一個List並試圖將它轉換爲一個ArrayList。它們不相同。

Here is a nice descriptio n類之間的差異。

相關問題