Пользовательский диалог с imageview в gridview
У меня есть пользовательский диалог, и я хочу показать 10 иконок. У меня есть этот код
private void showAlertDialog() {
GridView gridView = new GridView(this);
List<Integer> mList = new ArrayList<Integer>();
ArrayList<Integer> myImageList = new ArrayList<>();
for (int i = 1; i < 10; i++) {
mList.add(i);
}
gridView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, mList));
gridView.setNumColumns(3);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// do something here
}
});
// Set grid view to alertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(gridView);
builder.setTitle("Select icon");
builder.show();
}
Как сделать массив иконок? Сейчас я вижу только 1,2,3,4,5.... Кто-нибудь может мне помочь? Спасибо
2 ответа:
Создайте пользовательский
ArrayAdapter
.public class ImageAdapter extends ArrayAdapter { private Context mContext; public ImageAdapter(Context c) { mContext = c; } // 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(mThumbIds[position]); return imageView; } // references to our images private Integer[] mThumbIds = { R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, }; }
Замените ID в
mThumbIds
идентификаторы значков. После этого установите адаптер вGridView
:gridview.setAdapter(new ImageAdapter(this));
Чтобы настроить размер значка:
//Width and height in pixels int width = 150; int height = 150; imageView.setLayoutParams(new GridView.LayoutParams(width, height));
Вам потребуется создать адаптер вида для Gridview, а затем настроить изображения с его помощью. вы можете использовать это для справки Ссылка