2016-08-28 5 views
0

私の目標は「画像をアップロード」をクリックして、プロフィール上のインスタントグラムフィードに似たグリッドビューに表示させることです(スクロールしているフィード、グリッドフィード)。正直なところ私は非常に迷っていて、単にオンラインのサイトで見つけたさまざまな方法を試してきましたが、実際には何も効果がありませんでした。ギャラリーから写真をグリッドビューに追加したい(Androidスタジオ)

MainActivity:

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    private static final int RESULT_LOAD_IMAGE = 1; 
    private ArrayList<Image> items = new ArrayList<Image>(); 

    ImageView uploadedImage; 
    Button bUploadImage; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     bUploadImage = (Button)findViewById(R.id.bUploadImage); 
     bUploadImage.setOnClickListener(this); 

     GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(this,R.id.bUploadImage,items)); 

     gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, 
            int position, long id) { 
       Toast.makeText(MainActivity.this, "" + position, 
         Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
      case R.id.bUploadImage: 
       Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(galleryIntent, RESULT_LOAD_IMAGE); 
       break; 

     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null){ 
      Uri selectedImage = data.getData(); 
      uploadedImage.setImageURI(selectedImage); 
      Image i = new Image(); 
      i.setURI(selectedImage); 
      items.add(i); 

     } 
    } 
} 

ImageAdapter:

public class ImageAdapter extends ArrayAdapter<Image> { 
    private Context mContext; 
    private ArrayList<Image> items; 

    public ImageAdapter(Context context, int textViewResourceId, ArrayList<Image> items) { 
     super(context, textViewResourceId, items); 
     mContext = context; 
     this.items = items; 
    } 

    @Override 
    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; 
     } 
     if (position == 0) 
      imageView.setImageURI(items.get(position).getURI()); 
     return imageView; 
    } 
} 

Imageクラス:私はギャラリーからグリッド上の画像を表示する多くの方法が、どれも使用して画像を見てきました

public class Image { 
    private Uri imgURI; 

    public Uri getURI(){ 
     return imgURI; 
    } 

    public void setURI(Uri imgURI){ 
     this.imgURI = imgURI; 
    } 

} 

。上のコードでは、ギャラリーのUriをアダプターに渡そうとしていますが、アダプターとそのすべてがどのように動作するのか混乱しています。私はAndroid Studioの初心者です。どんな指導も有益です、ありがとう! item.addコールアダプタの後のonCreate

onActivityResultで
gridview.setAdapter(new ImageAdapter(this,R.id.bUploadImage,items)); 

)(

private ImageAdapter adapter; 

とのonCreateでクラスレベルのアダプタを作成します

adapter = new ImageAdapter(this,R.id.bUploadImage,items) 
gridview.setAdapter(adapter); 

に行を次の場所で

+0

お試しください - http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/ – onexf

+0

質問を編集できますか?あなたが何をしようとしているのかがはっきりしない。ありがとう。 –

答えて

0

。 notifyDatasetChanged。

+0

MainActivityに「adapter.notifyDatasetChanged」という呼び出しを追加することができません。その理由はわかりません。 –

+0

あなたはadapter.notifyDataSetChanged()を呼び出していますか(これは正確なスペルですが、これを試してください)。 – Ramit

関連する問題