我有自定義數組適配器的列表視圖。我想從getView方法中獲取項目點擊位置。我收到了幾個列表視圖項目的位置,但是當我添加更多的7個項目到我的列表中,我從getView方法得到錯誤的位置。我的意思是,當我點擊第九屆列表項則返回1自定義適配器getView metod在ListView上的位置錯誤
這裏是我的代碼
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
this.position = pos;
Log.v("View position", Integer.toString(pos));
lineView = convertView;
if(lineView==null)
{
adapterLine=new AdapterLine();
layoutInflater=context.getLayoutInflater();
lineView=layoutInflater.inflate(com.inomera.sanalmarket.main.R.layout.adapter, null,true);
adapterLine.sListText = (TextView) lineView.findViewById(R.id.sListText);
adapterLine.sListCheckbox = (CheckBox) lineView.findViewById(R.id.sListCheckbox);
adapterLine.sListImageView = (ImageView) lineView.findViewById(R.id.imageView1);
adapterLine.gestureOverlayView = (GestureOverlayView) lineView.findViewById(com.inomera.sanalmarket.main.R.id.gestureOverlayView1);
adapterLine.gestureOverlayView.setGestureVisible(false);
// To remember whitch tab is selected
adapterLine.sListImageView.setTag(pos);
adapterLine.sListCheckbox.setTag(pos);
adapterLine.sListText.setTag(pos);
Log.v("adapter", "position of adapter is " + Integer.toString(pos));
感謝您的幫助!
我有寫這篇文章\t \t lineView.setTag(adapterLine); \t \t \t}否則{ \t \t \t \t adapterLine =(AdapterLine)lineView.getTag(); \t \t \t}但仍然出現同樣的問題 – cagryInside
解決方案並不那麼簡單。您需要完全遵循ViewHolder模式才能完成此項工作。爲了響應您的評論,您需要在else中設置標籤,以便在用戶滾動列表時爲每行標記適當的行號。然而,我會建議遵循這個例子。 – paulb444