0

我正在處理CustomListViewAdapter當前,這裏是我的代碼在CustomListViewAdapter.java getView方法的提取。我認爲問題在於這裏,大多數情況下可能在{final View view = super.getView(...)}行中,因爲我已經使用調試模式進行測試。如何解決它?CustomListViewAdapter具有illegalStateException

描述:我想要做的是,當僅當在該行的switchImage上單擊時,相應的switchImage和lockImage會更改它們的圖像。 我已經嘗試過了,但是在我的MainActivity.class中的OnItemClickListener不允許我指定只有在單擊switchImage時纔會出現效果(一旦單擊行中的任何項目後會出現效果)。

THX的任何幫助和意見。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final View view = super.getView(position, convertView, parent); 
    final ImageView switchImage = (ImageView) view.findViewById(R.id.onOffSwitch); 
    final ImageView lockImage = (ImageView) view.findViewById(R.id.lock); 
    switchImage.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (flag == false) { 
       flag = true; 
... 
... 
... 
      } 
     } 
    }); 

    RowItem rowItem = getItem(position); 

    if (convertView == null) { 
     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     convertView = inflater.inflate(layoutResourceId, parent, false); 
     holder = new ViewHolder(); 
     holder.lock = (ImageView) convertView.findViewById(R.id.lock); 
     holder.appName = (TextView) convertView.findViewById(R.id.appName); 
... 
... 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.lock.setImageResource(rowItem.getLockId()); 
... 
... 
    return view; 
} 

回答

0

問題解決了。我這樣做。

@Override 
public View getView(int position, View convertView, ViewGroup parent) {  
    RowItem rowItem = getItem(position); 

    if (convertView == null) { 
     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     convertView = inflater.inflate(layoutResourceId, parent, false); 

     holder = new ViewHolder(); 
     holder.onOffSwitch = (ImageView) convertView.findViewById(R.id.onOffSwitch); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    // Newly added code that works. 
    final ImageView onOffSwitch = (ImageView) 
    convertView.findViewById(R.id.onOffSwitch); 
    onOffSwitch.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      } else { 
      } 
     } 
    }); 

    return convertView; 
}