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

checkbox 를 listActivity를 이용 처리 하였는데 스크롤시 스크롤시 상단 체크가 하단에도 체크 되는 현상을 어떻게 해결 해야 할까요?

0 추천
listActivity SimpleCursorAdapter 주소록을 띄웠습니다.(이미지의 주소록 정보는 지웟습니다.)
 
이미지는 이렇습니다. (상단에 4개를 체크하고 스크롤을 내리니 4개중 2개가 보이는겁니다.)

 

여러명을 선택 하기 위래 체크박스를 추가 했습니다.
 
값을 가져오기 위해 체크한 부분에서 정보를 가져오는거 까진 잘 했는데요.
 
그런데 상단에 체크를 하고
 
스크롤을 내려서 보면
 
스크롤 내린곳에도 체크가 되어 있는데요
  
검색해보니
 
focusable=false로 하라고 해서 해봤는데 안되서요
 
이걸 따로 분리해서  감지 하는 방법이 없을까요
 
소스는 이렇습니다.
@Override

 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.dining_together_adjustment3);

  // 인텐트 값 가져오기

  get_intent_value = getIntent();

  cursor = managedQuery(Phone.CONTENT_URI, new String[] { Phone._ID,

    Phone.DISPLAY_NAME, Phone.NUMBER }, null, null,

    Phone.DISPLAY_NAME + " asc");

  if (cursor.moveToFirst() == false) {

   return;

  }

  mArrayList.add(" " + cursor.getString(1) + " - " + cursor.getString(2));

  while (cursor.moveToNext()) {

   mArrayList.add(cursor.getString(1) + " - " + cursor.getString(2));

  }

  this.isCheckedConfrim = new boolean[mArrayList.size()];

  startManagingCursor(cursor);

  cols = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER };

  names = new int[] { R.id.row_tv_name, R.id.row_tv_number };

  adapter = new SimpleCursorAdapter(this,

    R.layout.contact_muit_check_list_item, cursor, cols, names);

  this.setListAdapter(adapter);

  listView = getListView();

  listView.setItemsCanFocus(false);

  listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

  Button Borrow_money_the_former_button_ok = (Button) findViewById(R.id.Borrow_money_the_former_button_ok);

  Borrow_money_the_former_button_ok

    .setOnClickListener(new OnClickListener() {

     @Override

     public void onClick(View v) {
     }
    });
 }
item으로 쓰이는 xml파일입니다.
contact_muit_check_list_item. xml 입니다.

<?xml version="1.0"  encoding="utf-8"?>

<!-- 이 파일은 /res/layout/listview.xml이다. -->

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/RelativeLayout_contact_muit_check_list_item"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:focusable="false" >

    <CheckBox

        android:id="@+id/row_chbox"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"

        android:focusable="false" />

    <TextView

        android:id="@+id/row_tv_name"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"

        android:layout_toRightOf="@+id/row_chbox"

        android:background="#ffffff" />

    <TextView

        android:id="@+id/gap"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"

        android:layout_toRightOf="@+id/row_tv_name"

        android:background="#bcbcff" />

    <TextView

        android:id="@+id/row_tv_number"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"

        android:layout_toRightOf="@+id/gap"

        android:background="#bccbff" />

</RelativeLayout> 
 listView = getListView();
 listView.setItemsCanFocus(false);
 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
 
이렇게 했는데도 안되는거면 머가 문제인 걸까요??
구글링을 하고 이거저거 다 시도 해봤는데 어떻게 해야 할지
방향이 안잡혀 다시 정리해서 다시 올립니다.

 

오로도로동 (520 포인트) 님이 2013년 5월 30일 질문

1개의 답변

0 추천
리스트뷰가 자식뷰들을 재사용 하기 때문에 생기는 문제입니다.

SimpleCursorAdapter 말고 커스텀 아답터 만드셔서

bindView에서 뷰 데이터 셋팅을 해주셔야 해요.

커스텀 아답터 만드는 방법을 검색해보세요.
b22n (22,940 포인트) 님이 2013년 5월 31일 답변
...