views:

38

answers:

1

The class which cause error is given below

package com.extrasmart;

import android.app.Activity; import android.os.Bundle; import android.view.View; //import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.AdapterView.OnItemSelectedListener;

public class ActivityImgGrid extends Activity {

ExtraSmartApplication application = (ExtraSmartApplication) getApplication();

GridView mGrid;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activityimg_grid);
    mGrid = (GridView) findViewById(R.id.imgGrid);
    mGrid.setAdapter(new AppsAdapter());
    mGrid.setOnItemSelectedListener(new OnItemSelectedListener()
    {
        public void onNothingSelected(AdapterView v) {
            // TODO Auto-generated method stub

        }

        public void onItemSelected(AdapterView parent, View v, int position, long id) {
            ExtraSmartApplication application = (ExtraSmartApplication) getApplication();

            application.setSelCategoryIcon(position);
            setResult(RESULT_OK);       
            finish();

        }

    });

}

public class AppsAdapter extends BaseAdapter {
    ExtraSmartApplication application = (ExtraSmartApplication) getApplication();
    private Integer[] imageIDs = application.getCategoryIcons();

    public AppsAdapter() {
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView i;

        if (convertView == null) {
            i = new ImageView(ActivityImgGrid.this);
            //i.setScaleType(ImageView.ScaleType.FIT_CENTER);
            i.setLayoutParams(new GridView.LayoutParams(48, 48));
            i.setScaleType(ImageView.ScaleType.CENTER_CROP);
            i.setPadding(5, 5, 5, 5);
        } else {
            i = (ImageView) convertView;
        }

        i.setImageResource(imageIDs[position]);
        return i;
   }


    public final int getCount() {
        return imageIDs.length;
    }

    public final Object getItem(int position) {
        return imageIDs[position];
    }

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

}

xml file:

android:gravity="center" android:minHeight="48px" android:minWidth="48px" />

Class used by ActivityImgGrid class

public class ExtraSmartApplication extends Application {

//private static final String APP_CREDENTIALS = null;
private Integer selCategoryImg;
private boolean isCardImageNew = false;
private byte[] cardImage = null;

private Integer[] categoryImgs = { R.drawable.cricket, R.drawable.football, R.drawable.vollyball };

private boolean isCatCreated = false;

public ExtraSmartApplication() {
    super();
}

@Override public void onTerminate() { super.onTerminate(); }

public Integer getSelCategoryIcon() {
    return this.selCategoryImg;
}

public Integer[] getCategoryIcons() {
    return this.categoryImgs;
}

public void setSelCategoryIcon(int position) {
    this.selCategoryImg = categoryImgs[position];
}

public void setCatCreated(boolean isCatCreated) { this.isCatCreated = isCatCreated; }

public boolean isCatCreated() {
    return isCatCreated;
}

public void setCardImageNew(boolean isCardImageNew) {
    this.isCardImageNew = isCardImageNew;
}

public boolean isCardImageNew() {
    return isCardImageNew;
}

public void setCardImage(byte[] cardImage) {
    this.cardImage = cardImage;
}

public byte[] getCardImage() {
    return cardImage;
}

}

A: 

It would be better if u can share some code snippets...

Anyways, as far as ClassCastException is concerned, it means you are declaring a variable of some type and assigning it to another type you have defined in a layout xml file...

for example, in the xml you may have had:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_height="wrap_content"
android:id="@+id/btn1"
android:layout_width="wrap_content">
</Button>
</LinearLayout>

but while connecting the component to code:

ImageView img1 = (ImageView)context.findViewById(R.id.btn1);

This will fire a ClassCastException bcoz you are casting a Button to an ImageView variable which is as u understand not possible!

If this doesnt solve your problem then it'll be better if u post some code snippets after figuring out which code snippet causes the error!

JaVadid
Thanks.The code is given for you
niya
as far as i see i don understand this line - ExtraSmartApplication application = (ExtraSmartApplication) getApplication(); , bcoz getApplication when called in this way returns the context of the your application and not an object of your ExtraSmartApplication class...
JaVadid