2016-01-25 31 views
1

我已經試過這Filter ListView with arrayadapter,這Filter List環節,實現列表過濾的,但我不斷收到此錯誤:在過濾的ListView與TextWatcher得到IndexOutOfBoundsException異常

Process: br.com.soutsapp.user.souts, PID: 315 java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) at br.com.soutsapp.user.souts.userInterface.adapter.EstablishmentAdapter.getView(EstablishmentAdapter.java:54)

這個錯誤發生我getView

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    br.com.soutsapp.user.souts.userInterface.viewHolder.Establishment viewHolder; 
    View rowView = convertView; 
    if(convertView == null){ 
     LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     rowView = layoutInflater.inflate(R.layout.establishment_row, null, true); 

     viewHolder = new br.com.soutsapp.user.souts.userInterface.viewHolder.Establishment(); 
     viewHolder.ivIcon = (ImageView) rowView.findViewById(R.id.iv_icon); 
     viewHolder.tvClosingTime = (TextView) rowView.findViewById(R.id.tv_closing_time); 
     viewHolder.tvOpeningTime = (TextView) rowView.findViewById(R.id.tv_opening_time); 
     viewHolder.tvDistance = (TextView) rowView.findViewById(R.id.tv_place_distance); 
     viewHolder.tvName = (TextView) rowView.findViewById(R.id.tv_name); 
     viewHolder.tvWorkingStatus = (TextView) rowView.findViewById(R.id.tv_working_status); 
     viewHolder.tvType = (TextView) rowView.findViewById(R.id.tv_type); 

     rowView.setTag(viewHolder); 
    } 
    else { 
     viewHolder = (br.com.soutsapp.user.souts.userInterface.viewHolder.Establishment) convertView.getTag(); 
    } 

    Establishment establishment = establishmentList.get(position); //Error here 
    viewHolder.ivIcon.setImageDrawable(establishment.getIcon()); 
    viewHolder.tvClosingTime.setText(establishment.getClosingTime().toString("HH:mm")); 
    viewHolder.tvOpeningTime.setText(establishment.getOpeningTime().toString("HH:mm")); 
    viewHolder.tvName.setText(establishment.getName()); 
    viewHolder.tvType.setText(establishment.getType()); 

    viewHolder.tvWorkingStatus.setText(establishment.getWorkingStatusLabel()); 
    viewHolder.tvWorkingStatus.setTextColor(getColorWorkingStatusLabel(establishment.isWorkingStatus())); 

    viewHolder.tvDistance.setText(formatDistance(establishment.getDistance())); 

    rowView.setId((int)establishment.getId()); 
    return rowView; 
} 

我無法弄清楚如何解決這個問題,你能告訴我方式嗎?謝謝!

+1

顯示'getCount()'方法,並確保從'getCount'返回'establishList.size' –

+0

請添加與'establishmentList'相關的代碼!似乎'建立列表'沒有按預期啓動。 –

+0

你的getCount()返回什麼? –

回答

0

重寫getCount方法並返回您的列表大小。在適配器類中。

+0

這解決了問題! – guisantogui

0

你在哪裏填充數據?我的意思是你在哪裏設置for循環來添加數據?

相關問題