Пользовательский диалог с 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 2

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, а затем настроить изображения с его помощью. вы можете использовать это для справки Ссылка