-1
ギャラリーから取得した画像を表示しようとしています。私はsetImageBitmap
のように電話をすることはできません。それはImageViewがまだ作成されていないからですか?ギャラリーから動的に作成されたImageViewに画像を表示しようとしています
パブリッククラスMainActivityはAppCompatActivity {
int RESULT_LOAD_IMAGE = 1;
//LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS
ArrayList<ImageView> listItemImg=new ArrayList<>();
//DEFINING A STRING ADAPTER WHICH WILL HANDLE THE DATA OF THE LIST VIEW
ArrayAdapter<ImageView> adapter;
//RECORDING HOW MANY TIMES THE BUTTON HAS BEEN CLICKED
int clickCounter=0;
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (mListView == null) {
mListView = (ListView) findViewById(R.id.picsListView);
}
adapter = new ArrayAdapter<>(this, R.layout.item_layout, R.id.picImageView, listItemImg);
setListAdapter(adapter);
}
このボタンがクリックされたときに呼び出されるメソッドを拡張します。
public void addStuff(View view) {
Intent gallery = new Intent(Intent.ACTION_GET_CONTENT);
gallery.setType("image/*");
startActivityForResult(gallery, RESULT_LOAD_IMAGE);
}
//METHOD WHICH WILL HANDLE DYNAMIC INSERTION
protected ListView getListView() {
if (mListView == null) {
mListView = (ListView) findViewById(R.id.picsListView);
}
return mListView;
}
protected void setListAdapter(ListAdapter adapter) {
getListView().setAdapter(adapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK){
Uri imageUri = data.getData();
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
//This is the ImageView in which I'm trying to display the selected Image.
listItemImg.set(clickCounter, bitmap);
} catch (IOException e) {
e.printStackTrace();
}
clickCounter++;
adapter.notifyDataSetChanged();
}
}
}
ご質問があまりにも基本的な場合は申し訳ありません。私はどこにも使用例を見つけることができませんでした。