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

listview checbox 선택..

+1 추천
choiceList = (ListView)findViewById(R.id.choice_list);
//배열
final ArrayList<String>choiceArr = new ArrayList<String>();
choiceAdap = new ArrayAdapter<String>
(this,R.layout.listview_custom,R.id.listText,choiceArr);
choiceList.setAdapter(choiceAdap);
choiceList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
ArrayList temp = select_stu();
for(int i=0; i < temp.size(); i++)
{
 choiceArr.add(temp.get(i).toString()); 
}
choiceAdap.notifyDataSetChanged();
choiceList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> 
choiceAdap, View view, final int position,long id) 
{
  sel="";
  String newsel = null;
  SparseBooleanArray spArr = choiceList.getCheckedItemPositions();
  for(int i=0; i<choiceList.getCount(); i++)
{
   if(spArr.get(i))
  {
    newsel = choiceList.getItemAtPosition(i).toString();
   }
}
Toast.makeText(getApplicationContext(), "선택:"+newsel, Toast.LENGTH_LONG).show();
				
}
});
		
}//onCreate
	

안녕하세요.

현재 choiceList에 있는 값들을 listView 에 불러오는 것까지 마무리가 되었는데요,

제가 원하는 항목들만 체크박스로 선택해서 [확인]같은 특정 버튼 하나를 누르면 다른 textview든 어디든 회원의 이름을

출력하려고 합니다. 위의 onItemClick으로 리스트뷰 자체를 누르면 현재 선택한 열[row]의 내용이 출력이 됩니다.

 

왼쪽의 xml에는 listview와 checkbox를 미리 코딩해놨구요,

이런식으로 현재 4명의 정보가 리스트에 있다면, 현재는 리스트의 열을 눌러서 click이벤트로 toast로 선택한 열의 

정보가 나옵니다. 가령 이상해 배구를 누르면 선택:이상해 배구 이런식으로 toast가 팝업됩니다.

row[열]도 클릭되도 상관없지만, 체크박스 영역만 터치 가능하게끔 만들고 싶은데, checkbox쪽을 어떻게 해야할지 모르겠습니다 ㅠ.ㅠ..listview checkbox에 대해 살펴보니, view의 재활용문제로 checkbox에 체크된 애들만 따로 저장했다가 체크해야하는데, 어떤 원리로 실행되는지.. 조금이라도 알려주신다면 감사하겠습니다 (__)

 

 

anci (19,950 포인트) 님이 2014년 3월 11일 질문

1개의 답변

+1 추천
Adapter 내의 getView()함수에서.

CheckBox 를 findViewById()로 찾아서 사용하시면 됩니다~~~
안드로이드로우 (15,740 포인트) 님이 2014년 3월 12일 답변
http://blog.babukuma.com/2010/01/android-listviewbutton_22.html

를 보시면 도움이 되실것같습니다.

위 글은 checkbox가 아니라 button이지만,
참고는 하실수 있으실것 같습니다 ㅎㅎ

여기서
check된 애들만 따로 저장해놓는다 하시면
체크리스너를 달아서 어떤 저장소같은곳에 저장해놓으면 될것같습니당
...