Abhishek Maheshwari
Abhishek Maheshwari

Reputation: 121

error The method setAdapter(ListAdapter) in the type GridView is not applicable for the arguments (ImageAdapter)

i am create swip view for images using pager adapter but have face some problem The method setAdapter(ListAdapter) in the type GridView is not applicable for the arguments (ImageAdapter) i am type cast to list view but logcat show error in below class i found error in gridView.setAdapter(new ImageAdapter(getApplicationContext())); pls give me helpful solution.

public class AndroidGridLayoutActivity extends Activity {
String sp_items[] = new String[] { "TargetMovie", "About Us", "Like-Us",
        "Other"

};
Spinner spinner;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.grid_layout);
    GridView gridView = (GridView) findViewById(R.id.grid_view);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    gridView.setAdapter(new ImageAdapter(getApplicationContext()));

    gridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
            i.putExtra("id", position);
            startActivity(i);

        }
    });
}

}

imageadapter***********************************

public class ImageAdapter extends PagerAdapter {
private Context mContext;

ImageView imageView;
private Context context;
// Keep all Images in array
public Integer[] mThumbIds = { R.drawable.a00, R.drawable.a01, R.drawable.a02, R.drawable.a03,
        R.drawable.a04, R.drawable.a05, R.drawable.a06, R.drawable.a07, R.drawable.a08, R.drawable.a09,R.drawable.a10, R.drawable.a11, R.drawable.a12, R.drawable.a13,
        R.drawable.a14, R.drawable.a15, R.drawable.a16, R.drawable.a17, R.drawable.a18, R.drawable.a19, R.drawable.a20, R.drawable.a21, R.drawable.a22
        , R.drawable.a23, R.drawable.a24, R.drawable.a25, R.drawable.a26, R.drawable.a27, R.drawable.a28, R.drawable.a29, R.drawable.a30
};

// Constructor
public ImageAdapter(Context c) {
    mContext = c;
}

@Override
public int getCount() {
    return mThumbIds.length;
}

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

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

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);

    if (convertView == null) {
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(250, 300));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(4, 4, 4, 4);
    } else {
        imageView = (ImageView) convertView;
    }

    imageView.setImageResource(mThumbIds[position]);

    return imageView;
}


@Override
public boolean isViewFromObject(View view, Object object) {
    return view == ((ImageView) object);
}



 @Override
    public Object instantiateItem(ViewGroup container, int position) {

      ImageView imageView = new ImageView(context);

      imageView.setPadding(4, 4, 4, 4);
      imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
      imageView.setImageResource(mThumbIds[position]);
      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }

}

Upvotes: 0

Views: 2448

Answers (1)

Gopal Gopi
Gopal Gopi

Reputation: 11131

GridView expects a Adpater which must be sub class of ListAdapter class. but your ImageAdapter class extends PagerAdapter which is not a sub class for ListAdapter.

try extending ListAdapter sub classes like BaseAdapter instead of PagerAdapter

Upvotes: 3

Related Questions