안녕하세요.
저번엔 클릭이벤트로 클릭시,롱클릭시,프로필클릭시 등 클릭이벤트를 넣는법을 포스팅 했습니다.
이번에는 클릭후 실직적인 데이터의 이동과 화면전환에 대해서 포스팅하겠습니다.
해당 포지션의 이미지 클릭시 이벤트 처리를 하였습니다.
다음과같이 사진과 이름과 나이에 대한 데이터를 이동시키고 profile 엑티비티에 적용시킨 모습입니다.
하나의 profile을 만들어두면 어뎁터에서 클릭리스너가 사용되어 profile의 정보가 계속 바뀌고 하나의 액티비티로
프로필을 재사용할 수 있겠죠 ?
Adapter의 ViewHolder의 personPhoto 에 클릭 리스너를 달아 줬습니다.
여기서 중요한건 position 입니다.
해당 뷰의 위치를 확인해서 데이터를 불러와야 profile Activity로 해당 데이터를 전달 시켜 주는 겁니다.
다음과 같이 온클릭 리스너에 인텐트를 넣어주고 putExtra를 통해 객체의 데이터를 이동시켜줍니다.
그리고 마지막에 context.startActiviy(intent)를 통해 새로운 엑티비트를 열어줍니다.
객체 내용입니다.
초보자들이 자주 실수하는 부분이 있습니다. manifests 에 새로만든 엑티비티를 입력해줘야
profile 엑티비티를 실행시킬 수 있습니다.
어뎁터코드입니다.
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {public static ArrayList<Person> person ;Context context ;public RVAdapter( ArrayList<Person> person){this.person = person;}@NonNull@Overridepublic PersonViewHolder onCreateViewHolder(ViewGroup viewGroup,int position) {View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recycler_view, viewGroup, false);PersonViewHolder pvh = new PersonViewHolder(v, position);return pvh;}@Overridepublic void onBindViewHolder(final PersonViewHolder personViewHolder, final int position) {personViewHolder.personName.setText(person.get(position).name);personViewHolder.personAge.setText(person.get(position).age);personViewHolder.personPhoto.setImageResource(person.get(position).img);personViewHolder.personPhoto.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view ) {Log.d("test", "클릭됨");context = view.getContext();Intent intent = new Intent(context, UserProfile.class);intent.putExtra("age",person.get(position).age);intent.putExtra("name", person.get(position).name);intent.putExtra("img", person.get(position).img);Log.d("getPosition", String.valueOf(position));context.startActivity(intent);}});}@Overridepublic int getItemCount() {return person.size();}
public static class PersonViewHolder extends RecyclerView.ViewHolder {CardView cv;TextView personName;TextView personAge;ImageView personPhoto;PersonViewHolder(final View itemView ,final int position) {super(itemView);cv = (CardView)itemView.findViewById(R.id.cv);personName = (TextView)itemView.findViewById(R.id.person_name);personAge = (TextView)itemView.findViewById(R.id.person_age);personPhoto=(ImageView)itemView.findViewById(R.id.person_photo);personPhoto.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.d("test", "포토클릭됨");}});itemView.setOnLongClickListener(new View.OnLongClickListener() {public boolean onLongClick(View v) {Log.d("test", "롱클릭됨");return true;}});}}}class Person {String name ;String age ;int img;public Person(String name, String age, int img) {this.name = name;this.age = age;this.img = img;}
UserProfile 입니다.
public class UserProfile extends AppCompatActivity {ArrayList<Person> person;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.user_profile);TextView textViewName =(TextView)findViewById(R.id.person_name);TextView textViewAge =(TextView)findViewById(R.id.person_age);ImageView imageViewphoto =(ImageView)findViewById(R.id.person_photo) ;Intent intent = getIntent();textViewName.setText(intent.getStringExtra("name"));textViewAge.setText(intent.getStringExtra("age"));imageViewphoto.setImageResource(intent.getIntExtra("img",0));}}
user_Profile xml 입니다.
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/person_photo"android:layout_width="318dp"android:layout_height="289dp"android:layout_alignParentTop="true"android:layout_gravity="center"android:gravity="center"android:text="name"android:layout_marginTop="100dp"android:textSize="100dp" /><TextViewandroid:id="@+id/person_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginLeft="50dp"android:layout_gravity="left"android:gravity="center"android:text="name"android:textSize="40dp" /><TextViewandroid:id="@+id/person_age"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginLeft="50dp"android:layout_gravity="left"android:gravity="center"android:text="age"android:textSize="40dp" /></LinearLayout>
'프로그래밍 > 안드로이드,xml' 카테고리의 다른 글
안드] 액션바 컬러 변경하기 (0) | 2018.11.08 |
---|---|
안드로이드] 오토 스크롤 뷰페이저 (0) | 2018.11.08 |
안드 롱클릭 클릭후 해제시 온클릭이 클릭이 될때 (0) | 2018.10.29 |
앱 공부 현황 (0) | 2018.10.29 |
녹스에뮬 사용하기 (0) | 2018.10.25 |