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

listview와 setresult(startactivityforresult) 질문이요

0 추천
첫번째 화면에는 이미지뷰와 텍스트 뷰와 버튼으로 구성되어있고, 두번째 화면은 listview로 구성되어있으며,

listview 안에는 이미지뷰 텍스트뷰(이름,전화번호)로 구성되어있습니다.

 

어떤프로그램이냐면 첫번째 화면에서 버튼을 클릭하면 , 두번째 화면으로 넘어가고

두번째화면에 listview중 하나를 클릭하면 , 첫번째 화면으로 넘어가서 클릭한 값을

첫번째화면에 있는 이미지뷰와 텍스트뷰에 나오게 하는것입니다..

 

근데 첫번째 화면에서 두번째 넘어가는 것은 해결을 하였는데, 두번째 화면에서 클릭한값을 첫번째 화면으로 넘기는것을 못하겠어요... 부탁드립니다!!!!!!

 

* 두번째 화면에서 첫번째 화면으로 쳘과를 넘겨줄떄는 setresutl()함수를 쓰라고 하는데.. 도통 안되네요

*adapter 도 사용하였습니다!!
androidking (160 포인트) 님이 2014년 6월 2일 질문
메인소스입니다

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity {
   
    static final int GET_STRING = 1;
   
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Button b = (Button) findViewById(R.id.button1);
        

        b.setOnClickListener(
              new OnClickListener() {
                       public void onClick(View arg0) {
                           Intent i = new Intent(MainActivity.this,
                                           SubActivity.class);
                           startActivityForResult(i, 1);
                                             
                       }
              }
        );
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }
   
}
서브 소스입니다

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Intent;
import android.widget.AdapterView.OnItemClickListener;

public class SubActivity extends Activity {
       
     ListView mylist;
     FriendAdapter adapter;
     Intent intent = new Intent();
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
       
       
        adapter = new FriendAdapter(getApplicationContext());
        mylist = (ListView) findViewById(R.id.fView);
        mylist.setAdapter(adapter);
       
        Friend u1 = new Friend(getResources().getDrawable(R.drawable.a), "Emma Watson", "010-1234-5678");
        adapter.add(u1);
       
       
        Friend u2 = new Friend(getResources().getDrawable(R.drawable.b), "Jung-en-Ji", "010-8765-4321");
        adapter.add(u2);
       
       
        Friend u3 = new Friend(getResources().getDrawable(R.drawable.c), "Kim-Te-Hee", "010-1357-2468");
        adapter.add(u3);
       
       
        Friend u4 = new Friend(getResources().getDrawable(R.drawable.d), "cha-Yu-Ram", "010-1357-2468");
        adapter.add(u4);
       
       
        Friend u5 = new Friend(getResources().getDrawable(R.drawable.e), "Kang-Min-Kyung", "010-1357-2468");
        adapter.add(u5);
       
        adapter.notifyDataSetChanged();
       
    }
   
}
이건 리스트뷰 구성 소스입니다
import android.graphics.drawable.Drawable;

public class Friend {
     Drawable mIcon;
     String mName;
     String mNumber;
   
    Friend(Drawable Icon, String Name, String Number){
        mIcon = Icon;
        mName = Name;
        mNumber = Number;
    }
   
}

1개의 답변

0 추천
 
채택된 답변
setResult 는 성공적인 결과인지 여부를 판단할 때 쓰이는 거구요 Intent 를 넘겨주셔야 합니다 첫화면에서 onActivityResult 인가? 거기서 넘어온 Intent 로 처리하시면 되구요
mamondebaltob (32,750 포인트) 님이 2014년 6월 2일 답변
androidking님이 2014년 6월 2일 채택됨
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Button b = (Button) findViewById(R.id.button1);
        

        b.setOnClickListener(
              new OnClickListener() {
                       public void onClick(View arg0) {
                           Intent i = new Intent(MainActivity.this,
                                           SubActivity.class);
                           startActivityForResult(i, 1);
                                             
                       }
              }
        );
    }        이런식으로 메인화면에 썻는데..
sub 화면에는 뭐라고써야되나요..

지금이런식으로 했는데요  두번째에서 첫번째로 넘기는것을..못하겟어요

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
       
       
        adapter = new FriendAdapter(getApplicationContext());
        mylist = (ListView) findViewById(R.id.fView);
        mylist.setAdapter(adapter);
       
        Friend u1 = new Friend(getResources().getDrawable(R.drawable.a), "Emma Watson", "010-1234-5678");
        adapter.add(u1);
       
       
        Friend u2 = new Friend(getResources().getDrawable(R.drawable.b), "Jung-en-Ji", "010-8765-4321");
        adapter.add(u2);
       
       
        Friend u3 = new Friend(getResources().getDrawable(R.drawable.c), "Kim-Te-Hee", "010-1357-2468");
        adapter.add(u3);
       
       
        Friend u4 = new Friend(getResources().getDrawable(R.drawable.d), "cha-Yu-Ram", "010-1357-2468");
        adapter.add(u4);
       
       
        Friend u5 = new Friend(getResources().getDrawable(R.drawable.e), "Kang-Min-Kyung", "010-1357-2468");
        adapter.add(u5);
       
        adapter.notifyDataSetChanged();
       
    }
   
}
메인화면에서

onCreate 외에 onActivityResult 를 오버라이딩 하셔야 되구요

리스트뷰 에서 setResult 하시기 전에 Intent 를 만드셔서 putExtra 로 데이터를 입력한다음 setResult 에다가 Intent 를 같이 넣어주시고 finish 해주시면 됩니다
setResult 는 액티비티내에서 onItemClickListener 를 적용하시든지 아님
adapter 에서 UI 에다가 직접 onClickListener 를 적용하시든지 하셔요
죄송합니다..
제 소스 토대로.. 댓글로 작성해주시면서 설명을 해주실수잇나요...
이해가안되서요...ㅠㅠㅠ

adapter 소스입니다
import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class FriendAdapter extends BaseAdapter {

    private Friend mFriend;
    private Context mContext;
    private ImageView imgIcon;
    private TextView tvName;
    private TextView tvNumber;

    private ArrayList<Friend> mFriendList;

    public FriendAdapter(Context context) {
        super();
        mContext = context;
        mFriendList = new ArrayList<Friend>();
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mFriendList.size();
    }

    @Override
    public Friend getItem(int position) {
        // TODO Auto-generated method stub
        return mFriendList.get(position);
    }

    public void add(Friend user) {
        mFriendList.add(user);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v = convertView;

        if (v == null) {
            v = ((LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                    .inflate(R.layout.friend, null);

            imgIcon = (ImageView) v.findViewById(R.id.icon);
            tvName = (TextView) v.findViewById(R.id.name);
            tvNumber = (TextView) v.findViewById(R.id.number);
        }

        mFriend = getItem(position);

        if (mFriend != null) {
            imgIcon.setImageDrawable(mFriend.mIcon);
            tvName.setText(mFriend.mName);
            tvNumber.setText(mFriend.mNumber);
        }

       
        return v;
    }

}
...