Java 使用TextWatcher筛选ListView获取IndexOutOfBoundsException

Java 使用TextWatcher筛选ListView获取IndexOutOfBoundsException,java,android,listview,textwatcher,Java,Android,Listview,Textwatcher,我尝试了此链接,以实现列表可筛选,但我一直遇到以下错误: 进程:br.com.soutsapp.user.souts,PID:315 java.lang.IndexOutOfBoundsException:索引0无效,大小为0 位于java.util.ArrayList.ThrowindexOutfBoundsException(ArrayList.java:255) 获取(ArrayList.java:308) 在br.com.soutsapp.user.souts.userInterface

我尝试了此链接,以实现列表可筛选,但我一直遇到以下错误:

进程:br.com.soutsapp.user.souts,PID:315 java.lang.IndexOutOfBoundsException:索引0无效,大小为0 位于java.util.ArrayList.ThrowindexOutfBoundsException(ArrayList.java:255) 获取(ArrayList.java:308) 在br.com.soutsapp.user.souts.userInterface.adapter.EstablishmentAdapter.getView(EstablishmentAdapter.java:54)

此错误发生在my
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;
}

我想不出怎么解决这个问题,你能告诉我怎么走吗?谢谢

您在哪里填充了数据?我的意思是,你在哪里设置了for循环来添加数据

您在哪里填充了数据?我的意思是,你在哪里设置了for循环来添加数据

重写getCount方法并返回列表大小。在适配器类中。

重写getCount方法并返回列表大小。在适配器类中。

显示
getCount()
方法,并确保从
getCount
添加与
estributementlist
相关的代码!似乎
建立列表
未按预期启动。getCount()返回的是什么??建立列表大小为零,您可以尝试从零索引获取数据,因此只需检查您的列表大小Show
getCount()
方法,并确保从
getCount
返回
建立列表。大小
请添加与
建立列表相关的代码!似乎
建立列表
未按预期启动。getCount()返回的是什么??建立列表大小为零,您可以尝试从零索引获取数据,因此只需检查您的列表大小即可解决问题!这就解决了问题!