내 listview의 getview에서 나는 다른 변수에 위치를 할당합니다. 내 listrow 내에 체크 박스가 있습니다.안드로이드 listview보기의 위치를 얻는
나는 checkbox에 대해 setOnCheckedChangeListener를 정의했다.
이제 i jus가 행을 선택/선택 취소하면 getview가 호출되지 않습니다. 하지만 getview에서 설정된 position 값을 사용하면 올바른 값을 얻을 수 있습니다.
즉, 10 번째 위치를 클릭하면 변수도 10을 갖습니다.
어떻게 작동하는지 설명해주세요. 내가 행 (10)의 체크 박스를 클릭하면 난의 getView 내 POS = 위치를 설정하고 여기에
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
final int pos = position;
barcodeForSelectedRow = productList.get(pos).getBarcode();
formatForSelectedRow = productList.get(pos).getFormat();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.product_list_row, null);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.productid);
holder.text2 = (TextView) convertView.findViewById(R.id.price);
holder.text2.setOnClickListener(listener);
holder.image = (ImageView) convertView
.findViewById(R.id.productimageid);
holder.check=(CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
holder.image.setOnClickListener(listener);
} else {
holder = (ViewHolder) convertView.getTag();
}
// setWishListItemsInScanList(pos, convertView);
holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton checkBox,
boolean isChecked) {
Log.i("CheckBox check", "" + pos);
});
return convertView;
}
아래
내 코드가의 oncheckchnaged 리스너가 호출지고, 아니라의 getView 기능 는하지만 난 볼의 위치가 onchechchangedlistener에서 올바르게 나타납니다. 나는 그 일이 어떻게 일어나는지 알고있다.
NB : 예상되는 행동 인이 활동에 올 때마다 getview가 호출된다. 또한 체크 박스를 클릭하면 getview가 호출되지 않아야하며 잘 작동한다. 제 질문은 oncheckchangedlistener가 어떻게 정확하게 위치 값을 얻는 지입니다.
이 코드를 모두 게시하는 대신 관련 부분을 추출해야합니다. 과정에서 당신은 솔루션을 찾을 수 있습니다 ... – Kheldar
당신의 컨트롤은 체크 박스의 onCheckedChange()에 들어 가지 않습니다. – Hiral
onCheckedChanged이 확인란의 상태를 변경하면이 함수가 호출됩니다. 귀하의 getView 메서드가 아닙니다. – Triode