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

listview 와 setresult 질문이요

–1 추천
첫번째 화면에는 이미지뷰, 텍스트뷰, 버튼이 구성되어있고요 ,

두번째 화면에는 리스트뷰(이미지뷰, 텍스트뷰(이름,전화번호)) 가 구성되어있습니다.

프로그램은구동은 첫번째 화면에 있는 버튼을 클릭하면 두번째 화면으로 넘어가고,

두번째 화면에서 리스트 뷰중에서 하나를 클릭하면, 다시 첫번째 화면으로 넘어가서 두번째 화면에 클릭한

값들이 첫번쨰 화면에 있는 이미지뷰, 텍스트 뷰에 반환되는 것을 구동하려고하는데요

 

*adapter 도 썻어요~~

입문자라서 ...잘모르겟어요..
androidking (160 포인트) 님이 2014년 6월 2일 질문

1개의 답변

0 추천
어떤 문제가 있는지를 쓰셔야죠
익명사용자 님이 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 {
     
   
    @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, 0);
                                             
                       }
              }
        );
    }
    
    @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();
       
    }
   
}

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

}

이 소스를 토대로... 어떤소스를 추가해야되는지..설명해주실수잇으세요??

감히 전혀 안잡혀서요.. 서브에서 listview 중 하나를 클릭하면 첫번째 화면에 나타나게 하는 방법을 모르겟어요
서브 엑티비티에서 mylist 이친구에게 setOnItemClickListener()를 달아 줍니다. 그럼 클릭될때마다 클릭된 로우의 인덱스를 알수가 있어요. 그럼  adapter 이놈의 getItem()을 호출해서 클릭된 로우의 정보를 가져 올 수 있겠죠. 그 정보를 intent에 넣고 intent를 setResult()의 파라미터로 넘긴뒤 finish()를 합니다. 그럼 MainActivity가 다시 뜨면서 onActivityResult()가 호출 됩니다. 거기서 3번째 파라메터인 intent에 setResult()에 넣은 intent가 넘어 오게 됩니다. 거기서 처리하면 끝...( 너무 막적었나.. )
한번해보고 정 모르겠으면 다시 질문드릴꼐요 감사합니다 !!!!
...