Android: Mengubah Gambar di GridView Secara Terprogram [duplikat]

Saya telah menyiapkan GridView dengan mengikuti pedoman di sini. Sekarang saya ingin mengubah salah satu gambar secara terprogram (pengguna tidak mengklik gambar untuk mengubahnya). Bagaimana cara melakukannya jika saya mengetahui posisi gambar di grid?


person Jeff    schedule 14.08.2015    source sumber


Jawaban (1)


Di luar dugaan saya, Anda dapat membuat objek yang ditampilkan oleh adaptor Anda. Minta metode getView() Anda menyetel referensi ImageView di dalam objek itu.

Setelah Anda menyelesaikannya, Anda dapat menggunakan metode getItem() untuk mengembalikan objek tersebut, mendapatkan referensi ke ImageView dan kemudian mengatur gambar secara terprogram.

Jika Anda menggunakan implementasi persis dari panduan itu, Anda bisa menggunakan ArrayList.

public class ImageAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<ImageView> mImageViewArrayList = new ArrayList<>(mThumbIds.length);

public ImageAdapter(Context c) {
    mContext = c;
} 

public int getCount() { 
    return mThumbIds.length;
} 

public ImageView getItem(int position) {
    return mImageViewArrayList.get(position); 
} 

public long getItemId(int position) {
    return 0; 
} 

// 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;
    } 

    mImageViewArrayList.set(position,imageView);

    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,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7
}; 
} 

Kemudian di kelas Anda di mana Anda ingin mengubahnya secara terprogram, lakukan ini.

private void setImage(int position, int image){
    mAdapter.getItem(position).setImageResource(image);
}
person hitch.united    schedule 14.08.2015