#java #android #parsing #gridview
#java #Android #синтаксический анализ #просмотр сетки
Вопрос:
Я пытаюсь динамически заполнить gridview значками. Я следовал руководству по gridview hello. Однако массив с изображениями не всегда точно такой же. В зависимости от предыдущего действия выдается другое image array
(извлеченное из ответа soap), которое состоит из названий значков, например agenda => повестка дня.png. Я хотел создать массив, выполнив цикл по массиву и добавив его с помощью R.drawable icon_name
. Однако R.drawable
не удается выполнить синтаксический анализ до запрошенного массива целых чисел.
public class ImageAdapter extends BaseAdapter
{
private Context mContext;
final ArrayList<String> image = getIntent().getStringArrayListExtra("image");
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return icoontjes.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public ArrayList<Integer> icoontjes;
{
for (int i=0; i<image.size(); i ){
Integer icon= Integer.valueOf("R.drawable." image.get(i));
icoontjes.add(icon);
}
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(icoontjes.get(position));
return imageView;
}
}
Ответ №1:
Вы можете использовать
for (int i=0; i < image.size(); i ) {
Integer icon = getResources().getIdentifier(image.get(i), "drawable", "your.package");
icoontjes.add(icon);
}
где your.package
находится базовый пакет вашего приложения для Android (пакет, в котором вы static final R class
определили.
Таким образом, icon
переменная будет содержать идентификатор вашего чертежа на основе вашего image.get(i)
.
Ответ №2:
я могу дать вам ответ, но вы не должны (действительно не должны) этого делать…
вместо
Integer icon= Integer.valueOf("R.drawable." image.get(i));
попробуйте
R.class.getField("R.drawable." image.get(i)).getInt(null)