在我的listview的getview中,我將位置分配給另一個變量。 我在listrow中有一個複選框。android listview獲取視圖的位置
我已經爲複選框定義了setOnCheckedChangeListener。
現在,當我檢查/取消選中行時,我發現getview沒有被調用。 但我使用在getview中設置的位置值,它給了我正確的值。
即如果我單擊第10個位置,該變量也有10個。
請解釋我是如何工作的。
我的代碼如下
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;
}
我在這裏設置getview 內POS =位置,當我點擊第10行的複選框,則oncheckchnaged聽衆是越來越調用,但不是getview功能 但我看到它在onchechchangedlistener中位置正確。 我想知道它是如何發生的
NB:當我來到這個活動,這是預期的行爲時,調用getview也當我點擊複選框getview不應該被稱爲,它也工作正常。我的問題是如何oncheckchangedlistener獲取位置值正確
您應該提取相關部分,而不是發佈所有此代碼。在這個過程中,你可能會發現解決方案... – Kheldar 2012-02-28 10:46:55
你的意思是,你的控件不會進入複選框的onCheckedChange()? – Hiral 2012-02-28 10:47:25
onCheckedChanged當您更改複選框的狀態時,將調用此函數。不是你的getView方法 – Triode 2012-02-28 10:51:55