2016-08-28 3 views
0

내 목표는 "업로드 이미지"를 클릭하여 프로필의 인스 타 그램 피드와 비슷한 gridview에 표시되도록하는 것입니다 (스크롤 피드, 그리드 피드). 솔직히 나는 매우 길을 잃었고 온라인에서 사이트에서 발견 한 여러 가지 방법을 시도해 왔지만 실제로 아무 것도 효과가 없었습니다.Gallery의 사진을 GridView에 추가하고 싶습니다. (Android Studio)

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

이미지 클래스 : 나는 갤러리에서 그리드에 이미지를 표시하는 많은 방법이 있지만, 아무도 사용하여 이미지를 본

public class Image { 
    private Uri imgURI; 

    public Uri getURI(){ 
     return imgURI; 
    } 

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

} 

. 위의 코드에서 갤러리의 어댑터에서 Uri 이미지를 어댑터로 전달하려고 시도하지만 어댑터와 어댑터의 작동 방식에 대해서는 혼란 스럽습니다. 저는 Android Studio에서 완벽한 초보자입니다. 어떤 안내라도 도움이된다. 고마워! 다음 줄 대신에

+0

시도해주세요. http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/ – onexf

+0

질문을 편집 할 수 있습니까? 정확히 무엇을하려는 것인지 불분명합니다. 감사. –

답변

0

에서 onCreate

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

는 item.add 전화 어댑터 후

private ImageAdapter adapter; 

과에서 onCreate에서 (클래스 수준 어댑터

)하여 onActivityResult에서

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

을 만듭니다. notifyDatasetChanged.

+0

MainActivity에 "adapter.notifyDatasetChanged"호출을 추가 할 수 없습니다. 그 이유는 확실하지 않습니다. –

+0

adapter.notifyDataSetChanged()를 호출하고 있습니까? (정확한 맞춤법입니다. 시도해주세요) 그렇지 않으면 세부 정보를 제공합니다. – Ramit

관련 문제