해당 내용은 개인적인 기록으로 질문을 일체 받지 않습니다.
알아두시기 바랍니다.

일전에 하나의 액티비티에서 여러개의 아이템을 가져오는 것에 대해 고민 한 적이 있었다.
요사이 바쁜 일이 많기에 좀처럼 코딩을 할 수 없었으나 시간이 나서 잠깐 해 보았다.


listview 에서 해당 아이템으로 intent를 보내는 과정.

  소스1
  1.     protected void onListItemClick(ListView l, View v, int position, long id) {
  2.     super.onListItemClick(l, v, position, id);
  3.    
  4.       if(position == 0){       
  5.         Intent intent = new Intent(this, page_one.class);
  6.         intent.putExtra("abc""kimfish");
  7.         startActivity(intent);
  8.       } 
  9.       else if(position == 1){
  10.             Intent intent = new Intent(this, page_one.class);
  11.         intent.putExtra("abc""bbbb");
  12.             startActivity(intent);
  13.       }
 

소스 1에서 리스트의 구현과 함께 position을 통하여 두 개의 아이템에 각각의 메시지를 전달해준다.
Intent intent = new Intent(this, page_one.class) 에서는 intent로의 이동을 의미한다고 볼 수 있는데, this(현재 클래스.this라 적어도 된다.)에서 page_one.class로 intent 값을 보낸다고 보면 된다. 
 

 intent.putExtra("abc""kimfish");를 보자면 abc란 값에 kimfish를 넣어서 putExtra로 보낸다.
그럼 다음 소스를 보자.


 소스2
  1. Intent intent = getIntent();
  2.          String str = intent.getStringExtra("abc");
  3.          TextView tv = new TextView(this);     //TextView 생성
  4.          tv.setText(str);                      //출력내용 지정
  5.          Log.i("abc"""+tv);
  6.          setContentView(tv);                   //Activity에 나타냄
 
소스1에서 보낸 intent를 getIntent가 받는다.
또한 소스1에서 abc에 kimfish를 넣어 보낸 값을 getStringExtra가 받게 된다.
이 abc에는 kimfish가 저장되어져 있으며 setText(str)값을 통하여 str를 출력, kimfish가 화면에 보이게 된다.

 
위의 내용은 리스트에서 
if(position == 0) 을 터치한 것에 대한 값 출력을 설명하였으나 else if(position == 1) 등을 터치했을 때에도 소스2에는 별다른 코드의 추가 없이 구현이 잘 된다.

참고로 Log.i("abc"""+tv); 는 abc가 잘 받아지는지에 대한 로그캣 출력값이다. 신경 안써도 된다.


이전에 해결한 문제점
2011/03/12 - [어장 안드로이드 프로그래밍] - listview
1. 이 포스트에서 다루듯이 해결.
2. 관련 내용이 아니기에 생략.
3. 소스1에서 내용을 보내기 때문에 for로 position값을 정해줄 수는 없다.
애초에 내가 생각한 것은 소스1에서 받은 position 값이 소스2 에서 받아지면서 이 position(예로 position == 0이면 소스2 에서 0을 받는 식) 값에 따라 해당 xml을 출력하는 방식이었다.
지금 생각해보면 왜 그딴 생각을 했는지 이해가 안된다.


또다시 생긴 문제점
1.
해당 내용을 보낼 때 소스2에서 xml값을 출력할 수는 없을까?
불러올 수 없다면 소스 1에서 많은 내용을 입력하고 많은 내용을 불러와야 할 뿐인가?  

2.
문제점은 아니지만 글 중간 중간에 사용자 키보드 입력을 받는 구간이 있을 것이다. 이제 이것을 구현하면 된다. 그런데 생각해보니 여러모로 1의 문제처럼 xml을 받는 것 보다는 직접 출력 하는 것이 더 좋지 않을까 한다.
이것에 대해서는 나중에 좀 더 생각해봐야 할 것 같다. 

'어장 Develop > 어장 Android' 카테고리의 다른 글

공지사항 dialog  (2) 2012.09.26
[Android] addview를 사용할 때의 위치설정  (0) 2012.08.08
Thread로 ProgressDialog 사용하기  (0) 2012.08.03
listview  (0) 2011.03.12
블로그 이미지

김생선

세상의 모든것을 어장관리

,