cursor adapter를 상속 받아 아답터를 구현중인데,
리스트에 토글 버튼을 넣었습니다.
리스트상에서 한 버튼이 on되면 리스트내의 다른 버튼은 off 이 되도록 구현 하고자 하는데, bindview내의 리스너에서 어떻게 그 index를 가져올지 막막하네요.
public class CustomCursorAdapter extends CursorAdapter {
@Override
public void bindView(View view, Context context, Cursor cursor) {
final ToggleButton btn= (ToggleButton)view.findViewById(R.id.toggle_btn);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view) {
updateButtons();
}
});
private void updateButtons()
{
//누른 버튼은 on, 그외 버튼은 off
// listview상에서 index는 어떻게 가져오죠?
}
답변 감사합니다.
디버깅 해보니 리스트가 스크린 사이즈를 넘어가더라도, newView와 bindView가 1:1로 호출 되진 않네요....
예를 들어, 스크린에 6개의 item이 디스플레이 되면, 처음 호출때는 newView와 bindView가 각각 6번씩(new->bind->new->bind...) 호출되는데, 스크롤이 되면 bindView만 호출되고 newView는 더 호출이 안되네요 @_@;
그래서인지. cursor.getPosition으로는 position이 맞지 않더라구요. position은 마지막에 display된 것의 position으로 가져오네요... 그리고, 토글 버턴을 사용한 이유가, 리스트에서 선택되어 지는것이 0개 또는 1개 여야 하거든요... @_@; 그래서 토글로 사용했어요...




cursor.getPostion()으로 position값을 식별할 수 있을 것 같은데요. 아니면 굳이 토글버튼을 사용하신 이유가 있나요? 이런 용도라면 체크박스가 맞을것 같긴한데..ListView자체에서 getCheckItemIds()가 토글박스에도 적용되는진 모르겠네요. 요놈을 사용하면 check된 id를 얻어올수 있습니다.