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?
Android: Mengubah Gambar di GridView Secara Terprogram [duplikat]
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