Mission Completed

2013.06.01 ArrayList<Object> Intent로 넘기고 받기 본문

개발/개인작업실

2013.06.01 ArrayList<Object> Intent로 넘기고 받기

삼지안☆ 2013. 7. 1. 17:43
/** 버튼 클릭 이벤트 */
@SuppressWarnings("unchecked")
@Override
public void onClick(View v) {
	switch (v.getId()) {
	case R.id.btnLeft:
		
		break;
	case R.id.btnRight:
		int counter = 0;
		// Adapter 에 등록된 데이터의 수 만큼 반복한다.
		for (int i = 0; i < adapter.getCount(); i++) {
			// Adapter 의 항목 한가지를 추출하여 체크 상태를 점검한다.
			JobList temp = adapter.getItem(i);
			if (temp.isChecked()){
				counter++;
			}
		}

		if (counter == 0) {
			Toast.makeText(this, "항목을 1개 이상 선택하셔야 합니다.", Toast.LENGTH_SHORT).show();
			return;
		}
		
		// 값을 Intent에 담기
		Intent intent = new Intent(this, TotalPriceActivity.class);
		intent.putParcelableArrayListExtra("jobList", (ArrayList<? extends Parcelable>)list);
		
		/** (1) */
		// SecondActivity에 3이라는 번호를 붙여서 이동 후,
		// SecondActivity가 종료되었을 때, 이 클래스의 특정 메소드를 자동으로 호출하도록 지정
		startActivityForResult(intent, 3);

		break;
	}
}

/**
 * (4)
 * startActivityForResult()에 의해서 호출된 Activity가 명시적으로 종료되어서
 * 원래의 화면으로 되돌아 올 경우, 자동으로 호출되는 메소드
 * @param int			호출했던 화면일련번호 (startActivityForResult 참조)
 * @param int			되돌려진 값의 여부
 * @param Intent		보내어진 데이터가 담긴 변수
 */
@SuppressWarnings("unchecked")
@Override
public void onActivityResult(int activity_number, int result_code, Intent data){
	switch (activity_number) {
	case 3:
		// SecondActivity에 다녀온 경우
		// 앞 화면에서 setResult()에 설정한 값에 따라서 처리를 구분
		if (result_code == Activity.RESULT_OK) {
			// Toast.makeText(this, "확인버튼 누름", Toast.LENGTH_SHORT).show();
			ArrayList<Parcelable> parceList = data.getParcelableArrayListExtra("jobList");
			list = (ArrayList<JobList>) parceList.clone();
			adapter.clear();
			adapter = new DataAdapter(this, list);
			lbJobs.setAdapter(adapter);
		} else if (result_code == Activity.RESULT_CANCELED) {
			// 이 처리는 Back 키를 누를 경우에도 해당 됨.
			Toast.makeText(this, "취소 버튼 누름", Toast.LENGTH_SHORT).show();
		}
		break;
	}
	Log.d("MainActivity", "onActiviyResult() 수행됨");
}
import java.util.ArrayList;

public class TotalPriceActivity extends Activity implements OnClickListener{

	ArrayList<JobList> list = null;
	
	@SuppressWarnings("unchecked")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_total_price);

		/** 리스트뷰에 대한 데이터 연결 */
		list = new ArrayList<JobList>();

		// --------------------------------------
		// 이전화번에서 전달된 값 받기
		// --------------------------------------
		Intent fromIntent = getIntent();
		ArrayList<Parcelable> parceList = fromIntent.getParcelableArrayListExtra("jobList");
		list = (ArrayList<JobList>) parceList.clone();

	}
}
import java.io.Serializable;

@SuppressWarnings("serial")
public class JobList implements Serializable {
	// Constructors, Getters and Setters
}