在我的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