public class MemberVO implements Serializable {
=> implements Serializable !!! 직렬화 시켜줘야됨 Intent intent = new Intent(getApplicationContext(),MainActivity2.class);
MemberVO vo = new MemberVO(name,age,hobby);
intent.putExtra("vo",vo);
startActivity(intent);
package com.example.ex220511;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button btn_move;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_move = findViewById(R.id.btn_move);
btn_move.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(),MainActivity2.class);
String name = "박병관";
int age =20;
String[] hobby = {"등산","물멍","자전거","운동"};
MemberVO vo = new MemberVO(name,age,hobby);
intent.putExtra("vo",vo); //오브젝트를 기본자료형처럼 직렬화시킴
startActivity(intent);
}
});
}
}
Intent intent = getIntent();
MemberVO vo = (MemberVO) intent.getSerializableExtra("vo");
: 직렬화시킨 vo를 다운캐스팅Log.v("myData", vo.toString());
package com.example.ex220511;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent = getIntent();
MemberVO vo = (MemberVO) intent.getSerializableExtra("vo");
//직렬화시킨 vo를 다운캐스팅
Log.v("myData", vo.toString());
3화면 -> 4로 이동 4에서 데이터담아서 -> 데이터를 3으로 이동,화면도 이동
3의 자바파일
클릭이벤트 :
Intent intent = new Intent(getApplicationContext(),MainActivity4.class);
받아올 데이터가 있을 때 : startActivityForResult
요청코드는 어디에서가져오는지 코드로 구분 내가지정함
startActivityForResult(intent,1004);
매개변수 : (int requestCode, int resultCode, @Nullable Intent data)
지정한 요청코드, 4에서 처리된 result코드, 인텐트
조건문 : requestCode==1004 && resultCode == RESULT_OK
Log.v("myData",data.getStringExtra("name"));
package com.example.ex220511;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity3 extends AppCompatActivity {
private Button btn_result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
btn_result = findViewById(R.id.btn_result);
btn_result.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(),MainActivity4.class);
startActivityForResult(intent,1004);
//받아올 것이 있을때 : startActivityForResult
// 요청코드 어디에서 가져오는지 코드로 구분
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//activity4에서 넘어온 intent 를 처리하는 부분
// 1004 내가보낸코드, 4에서 잘받았다는 코드
if(requestCode==1004 && resultCode == RESULT_OK){
Log.v("myData",data.getStringExtra("name"));
}
}
}
Intent intent = new Intent();
intent.putExtra("name","박병관");
setResult(RESULT_OK,intent);
현재페이지 받아줌: finish();
package com.example.ex220511;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity4 extends AppCompatActivity {
private Button btn_return;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
btn_return = findViewById(R.id.btn_return);
btn_return.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(); //네임값을 보낼때, 인텐트를 새롭게 만듦, 겟컨텍스트 안해도됨
intent.putExtra("name","박병관");
setResult(RESULT_OK,intent); //잘 수신됐다는 상수 RESULT_OK
finish(); //현재페이지 받아줌
}
});
}
}
new ArrayAdapter<>(getApplication(), android.R.layout.simple_list_item_1, item);
listView.setAdapter(adapter);
setOnItemClickListener
(AdapterView<?> adapterView, View view, int i, long l)
매개변수 : AdapterView<?>=어떤데이터타입인지 모른상태 listView클릭시나오는 어댑터, View view=리스트뷰, i=클릭한 위치값, l= 눌렀는지안눌렀는지 체킹부분`
setOnItemLongClickListener
익명 클래스
onItemLongClick 오버라이딩 : onItemLongClick(AdapterView<?> adapterView, View view, int i, long l)
데이터 변경을 알림 :
adapter.notifyDataSetChanged(); `
setOnClickListener
onClick
오버라이딩
edit_input.getText().toString();
->ArrayList에 add
데이터 변경을 알림 : adapter.notifyDataSetChanged();
package com.example.ex220511;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity5 extends AppCompatActivity {
private ListView listView;
private ArrayList<String> item = new ArrayList<String>(); //listview는 ArrayList형태로 들어감
private EditText edit_input;
private Button btn_input;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
listView = findViewById(R.id.listview);
edit_input = findViewById(R.id.edit_input);
btn_input = findViewById(R.id.btn_input);
item.add("마라탕");
item.add("양갈비");
item.add("소곱창");
item.add("소막창");
item.add("소대창");
item.add("특양구이");
item.add("와플");
item.add("꽃삼겹");
item.add("스테이크");
item.add("육회");
item.add("항정살");
//아이템(어레이리스트)
//리스트뷰 는 바로 들어가지 않고 어댑터 뷰가 필요함
//어댑터 통해 리스트 넣어줌 array 어댑터 이용해 넣어줌
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_list_item_1, item);
// 매개변수 - 어플정보, 디자인, 데이터
// android.R.layout.simple_list_item_1 기본 디자인 적용하겠다.
listView.setAdapter(adapter); //listview에 어댑터 적용
//item 클릭을 감지함
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// 매개변수 : <?> 어떤데이터타입인지 모른상태- listView클릭시나오는 어댑터, 리스트뷰, 클릭한 위치값, 눌렀는지안눌렀는지 체킹부분
String value = (String )adapterView.getItemAtPosition(i); //받아오는 데이터타입에 맞게 다운캐스팅
Toast.makeText(getApplication(), value, Toast.LENGTH_SHORT).show();
}
});
//길게 클릭시 삭제
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
item.remove(i);
adapter.notifyDataSetChanged(); //데이터 변경을 알림
return false;
}
});
btn_input.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String input = edit_input.getText().toString();
item.add(input);
adapter.notifyDataSetChanged(); //데이터 추가 --> 변경사항 알림
edit_input.setText("");
}
});
}
}