Android: Как преобразовать drawable в int?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android: Как преобразовать drawable в int?

Сообщение Anonymous »

Я получаю значки некоторых установленных приложений, используя этот код:

Drawable icon = getPackageManager().getApplicationIcon("com.example.example");
imageView.setImageDrawable(icon);


затем я хотел бы добавить это изображение в представление сетки, сформированное каким-либо изображением в разрешении. я не хочу менять адаптер, используемый с моим GridView. Я использую для каждого элемента значок и изображение, сохраненные в двух массивах.

ArrayList listCountry = new ArrayList();
ArrayList listFlag = new ArrayList();


Я добавляю элемент в свой listFlag следующим образом: listFlag.add(R.drawable.ppt);

Итак, как мне преобразовать Drawble в int, чтобы добавить его в listFlag? мой адаптер для просмотра элемента моего GridView представлен кодом ниже:

public class GridviewAdapter extends BaseAdapter
{
private ArrayList listCountry = new ArrayList();
private ArrayList listFlag = new ArrayList();
private Activity activity;
private Context context;

public GridviewAdapter( ) {
super();
}

public GridviewAdapter(Activity activity, ArrayList listC, ArrayList listF) {
super();
this.listCountry.clear();
this.listFlag.clear();
//this.notifyDataSetChanged();
this.listCountry.addAll(listC);
this.listFlag.addAll(listF);
this.activity = activity;
this.context = activity.getApplicationContext();
this.notifyDataSetChanged();}

@Override
public int getCount() {
// TODO Auto-generated method stub
return listCountry.size();
}

@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return listCountry.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}

public static class ViewHolder
{
public ImageView imgViewFlag;
public TextView txtViewTitle;
public TextView txtViewDescription;
}

public void setFile(ArrayList listC, ArrayList listF) {
listFlag.clear();
listCountry.clear();
listCountry.addAll(listC);
listFlag.addAll(listF);
notifyDataSetChanged();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder view;
LayoutInflater inflator = activity.getLayoutInflater();

if(convertView==null)
{
view = new ViewHolder();
convertView = inflator.inflate(R.layout.gridview_row, null);

view.txtViewTitle = (TextView) convertView.findViewById(R.id.textView1);
view.imgViewFlag = (ImageView) convertView.findViewById(R.id.imageView1);
view.txtViewDescription = (TextView) convertView.findViewById(R.id.textView2);

convertView.setTag(view);

convertView.setLayoutParams(new GridView.LayoutParams((int) context.getResources().getDimension(R.dimen.r_width), (int) context.getResources().getDimension(R.dimen.r_height)));
}
else
{
view = (ViewHolder) convertView.getTag();
}

view.txtViewTitle.setText(listCountry.get(position));
view.txtViewTitle.setSelected(true);
view.txtViewDescription.setText(SessionChoose.DESCRIPTION.get(position));
view.txtViewDescription.setSelected(true);
view.imgViewFlag.setImageResource(listFlag.get(position));

return convertView;
}
}


Подробнее здесь: https://stackoverflow.com/questions/236 ... ble-to-int
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»