2017-08-19 13 views
-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(); 
    } 
} 


} 

ご質問があまりにも基本的な場合は申し訳ありません。私はどこにも使用例を見つけることができませんでした。

答えて

0

が間違ったアダプタをListViewに設定しています。 ArrayAdapterは、対応する文字列オブジェクトをTextViewsに直接配置することができます。

この場合、(またはいずれかのアダプター)を拡張してメソッドをオーバーライドしてカスタムアダプターを作成する必要があります。

Hereは、アダプターとアダプター・ビューについての良いチュートリアルです。

関連する問題