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

리스트뷰 에서 체크박스 체크해제 질문입니다..

0 추천
package com.example.test;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class D_Adapter extends ArrayAdapter<MyData> {

 Context context;
 List<MyData> list;
 public D_Adapter(Context context,int textViewResourceid,List<MyData> list) {
  super(context, textViewResourceid, list);
  // TODO Auto-generated constructor stub
  this.context = context;
  this.list = list;
 }
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if(view == null) {
   LayoutInflater inflaster = (LayoutInflater) this.getContext()
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   view = inflaster.inflate(R.layout.activity_main, parent,false);
  }
  MyData mData = getItem(position);
  
  ImageView vi_image = (ImageView) view.findViewById(R.id.vi_image);
  TextView vi_title = (TextView) view.findViewById(R.id.vi_title);
  TextView vi_content = (TextView) view.findViewById(R.id.vi_content);
  TextView vi_price = (TextView) view.findViewById(R.id.vi_price);
  CheckBox cb1 = (CheckBox) view.findViewById(R.id.cb1);
  
  vi_image.setBackgroundResource(mData.getImgRes());
  vi_title.setText(mData.getTitle());
  vi_content.setText(mData.getContent());
  vi_price.setText(mData.getPrice());
  
  cb1.setChecked(false);
  
  cb1.setChecked(((ListView) parent).isItemChecked(position));
  
  
  return view;
 }
 
 
}

안드로이드 초보 개발자입니다..

포트 폴리오하다가 문제가 생겨서 이렇게 질문드립니다..

일단 TabHost에 ListView를 넣었습니다.

ListView 안에 각 Item 마다

xml 하나를 만들어 ImageView,TextView,CheckBox를 썼는데요

xml 하나로 tab4곳에서 각 item들이 돌려쓰다보니

체크가 되는것처럼보이는데 스크롤을 내리거나 올리면 체크가 해제되어버립니다.

처음엔 체크가 해제된후 스크롤 올리고 내릴때마다 랜덤으로 체크되고 해제되길래

그건 어떻게 잡은거같은데 이젠 아에 체크가 해제되어버리더군요.

아직 구글링 ,네이버에서 비슷하게 해봐도 이게 내꺼처럼 잘 못하겠더라구요

이해도 딸려서 잘안되구 ㅜㅜ

비슷한글이 있는것같은데 제꺼엔 어떻게 적용해야할지 모르겠더라구요..

그래서 이렇게 조언듣고싶어서 질문하나 남깁니다..

도와주십시요~ ㅜㅜ

더필요한 소스는 뭘올려야할지몰라서

메인 onCreate 부분 하나 더 올리겠습니다.

public class Man extends TabActivity implements OnItemClickListener {
private ListView listV1;

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

listV1 = (ListView) findViewById(R.id.listV1);
  D_Adapter adapter1 = new D_Adapter(this, R.layout.activity_main, list1);
listV1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  listV1.setAdapter(adapter1);
	}

}

일단 이정도만 올리겠습니다.. 몇부분 짤라서 넣었는데 필요한부분 잘 잘라넣었는지 잘모르겠군요 ㅜㅜ

ytw (810 포인트) 님이 2014년 5월 24일 질문

1개의 답변

0 추천
 
채택된 답변

초기화 문제 입니다.

우선 확인 해야 할 것이 item 선택 후 값이 어떻게 변하는지 봐야 합니다.

cb1.setChecked(((ListView) parent).isItemChecked(position));

위 code 에서 ((ListView) parent).isItemChecked(position) 의 결과 값을 확인 하세요.

만약 정상적인 값이 나온다면 cb1.setChecked(false); 이부분을 제거 하고 해보시기 바랍니다.

 

카라드레스 (2,910 포인트) 님이 2014년 5월 26일 답변
ytw님이 2014년 11월 5일 채택됨
...