Klr v
Klr v

Reputation: 11

Incompatible types: int cannot be converted to Drawable

I am trying to do a bubble picker animation on android studio but getting this error:

error: incompatible types: int cannot be converted to Drawable

It shows that the error is in this line

PickerItem item = new PickerItem(name[i],colors[i],Color.WHITE,getResources().getDrawable(images[i]));

And when I hover over on that line it shows something like this

something like this

Here is the java code:

import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.igalata.bubblepicker.BubblePickerListener;
import com.igalata.bubblepicker.model.PickerItem;
import com.igalata.bubblepicker.rendering.BubblePicker;

import java.util.ArrayList;

    public class  MainActivity extends AppCompatActivity {
        BubblePicker bubblePicker;
        int i;
        String[] name={
                "anime1","anime2","anime3","anime4","anime5","anime6"

        };
        int[] images={
                R.drawable.x1,
                R.drawable.x2,
                R.drawable.x3,
                R.drawable.x4,
                R.drawable.x5,
                R.drawable.x6


    };
    int[] colors={
            Color.parseColor("#1A237E"),
            Color.parseColor("#6200EA"),
            Color.parseColor("#004D40"),
            Color.parseColor("#1A237E"),
            Color.parseColor("#880E4F"),
            Color.parseColor("#B71C1C")
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bubblePicker = (BubblePicker) findViewById(R.id.bubble);
        ArrayList<PickerItem> listItems = new ArrayList<>();


        for(int i = 0; i<name.length; i++)
        {
            //Drawable drawable= getResources().getDrawable(images[i]);
            PickerItem item = new PickerItem(name[i],colors[i],Color.WHITE,getResources().getDrawable(images[i]));
            listItems.add(item);

        }
        bubblePicker.setItems(listItems);
        bubblePicker.setListener(new BubblePickerListener() {
            @Override
            public void onBubbleSelected(PickerItem pickerItem) {
                Toast.makeText(getApplicationContext(),""+pickerItem.getTitle()+"selected",Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onBubbleDeselected(PickerItem pickerItem) {
                Toast.makeText(getApplicationContext(),""+pickerItem.getTitle()+"Deselected",Toast.LENGTH_SHORT).show();


            }
        });


    }

    @Override
    protected void onResume(){
        super.onResume();
        bubblePicker.onResume();
    }
    @Override
    protected void onPause(){
        super.onPause();
        bubblePicker.onPause();
    }
}

Upvotes: 0

Views: 3177

Answers (3)

Martin
Martin

Reputation: 1219

I think you got yourself confused. The PickerItem constructor requires these 4 parameters in that particular order:

  1. String
  2. Drawable
  3. boolean
  4. Integer

Hence, it might look something like this:

PickerItem item = new PickerItem(name[i], context.getDrawable(images[i]), hasIconOnTop, colors[i]);

where hasIconOnTop is a boolean value.

Upvotes: 1

nikis
nikis

Reputation: 11234

I guess you've used the wrong argument order for the constructor, it should be:

PickerItem item = new PickerItem(name[i], getResources().getDrawable(images[i]), true/false, Color.WHITE);

Or something like this, don't know what is your requirement.

Upvotes: 1

Gerard
Gerard

Reputation: 66

PickerItem constructor has de following signature

new PickerItem (String, Drawable, boolean, Integer)

and you are using it as:

new PickerItem (String, int, int, Drawable)

you should try to use:

PickerItem item = new PickerItem(name[i],getResources().getDrawable(images[i]),true, colors[i]);

Upvotes: 0

Related Questions