마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

intent로 폼과 폼사이 사진넘기기 질문입니다.

0 추천

안녕하세요. 개발자님들 안드로이드를 공부하고 있는 초보 학생입니다.

저는 현재 회원가입창에서 사진을 불러오고, 불러온 사진을 다음폼에 리사이클뷰에 넣어주고 싶습니다.

하지만 intent로 넘기는 과정에서 원만히 해결되지 않아 질문을 남기게 되었습니다.

질문입니다.

1. 아래 코드에서 imageview에 있는 사진을 intent로 넘겨주고 있습니다.

bt_joinOK.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(tv_name.getText().toString().equals("")|| tv_email.getText().toString().equals("")||tv_password.getText().toString().equals("")) {
            Toast.makeText(JoinActivity.this, "필수입력 항목이 비어 있음", Toast.LENGTH_SHORT).show();
            return;
        } else {
            insertDatabase();

            //돌려보내자.
            Intent intent = new Intent();

            Bitmap sendBitmap = BitmapFactory.decodeResource(getResources(), R.id.imageView);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            sendBitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            byte[] byteArray = stream.toByteArray();
            intent.putExtra("image",byteArray);
            startActivity(intent);

            setResult(Activity.RESULT_OK, intent);
            finish();
        }
    }
});

 

2. intent로 받아온 이미지를 다음 리사이클뷰에 넣기위해 홀더에 연결시키고 싶습니다.

 

public void onBindViewHolder(ViewHolder holder, int position) {
    // - get element from your dataset at this position
   // - replace the contents of the view with that element
    holder.mName.setText(mDataset.get(position).getName());
    holder.mAge.setText(String.valueOf(mDataset.get(position).getAge())+"세"); //int를 가져온다는점 유의
    holder.mEmail.setText(mDataset.get(position).getEmail());
    //holder.mPhoto.setImageBitmap(mDataset.get(position).getProfilePhoto()); //첨부된 이미지를 연결해줘야
 
 

요약 : 첫번째 폼에서 불러온 사진을 intent로 보낸다 -> 두번째 폼에서 사진을 받아와 리사이클뷰에 표시한다. -> 리사이클뷰에 표시하기위해 홀더로 연결해줘야한다.

- 홀더로 연결해주기 위해 어떻게 소스를 작성해야하는지에 대해 궁금합니다!!!

익명사용자 님이 2017년 5월 16일 질문

1개의 답변

0 추천
onActivityResult를 이용해 해당 데이터를 받아 mDataSet에 넣은 후 Adapter.noitfyDatasetChanged()를 호출 하시면 됩니다.
갈무리 (12,430 포인트) 님이 2017년 5월 16일 답변
가입하는 액티비티에서 이렇게 작성하였습니다.
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == 0) {
            if(resultCode == Activity.RESULT_OK){
                //data 에서 uri를 가져온다.
                //미리보기로 출력하기
                Uri uri = data.getData();
                Glide.with(this) //context 부분을 어떻게 처리하는지 유의하자.
                        .load(uri) //실시간 데이터로 교체할것.
                        .centerCrop()
                        .into(ivPreview);
            }
        }
    }

리사이클 뷰 페이지에서는 Adapter.noitfyDatasetChanged() 로 사진을 받아와야하는건가요?
intent.putExtra("image",byteArray);

현재 1번 코드에서는 onActivityResult로 ByteArray를 던지는데, 2번 코드를 를 보니 uri를 컨트롤 하고 있네요.

새로 코드 작성하셔야 됩니다.
...