Java 在我的setOnClick崩溃后,我删除了适配器中的一些项目

Java 在我的setOnClick崩溃后,我删除了适配器中的一些项目,java,android,Java,Android,我试图在删除一些项目后显示listView。但是,在我删除了一些项目之后,OnItemClick崩溃(java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知)。我想在删除后显示一个新列表,就像过滤器一样。我已经尝试使用adapter.remove(位置)和list.remove(位置),如下面的示例所示 我的麦克里克 //listView.invalidateViews();

我试图在删除一些项目后显示listView。但是,在我删除了一些项目之后,OnItemClick崩溃(java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知)。我想在删除后显示一个新列表,就像过滤器一样。我已经尝试使用adapter.remove(位置)和list.remove(位置),如下面的示例所示

我的麦克里克


                //listView.invalidateViews();
                //listView.refreshDrawableState();
                //pullToRefresh.setRefreshing(false);
                Collections.sort(lista, new Viagem());
                adapter.notifyDataSetChanged();
                System.out.println(position);
                Viagem vg = (Viagem)  parent.getItemAtPosition(position);

                Bundle bundle = new Bundle();
                bundle.putString("usuario", usuario);
                bundle.putString("usuarioViagem", vg.getUsuario());
                bundle.putString("data", vg.getData());
                bundle.putString("hora", vg.getHora());
                Intent intent = new Intent(getApplicationContext(), MostraInfoViagemActivity.class);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
我是如何删除一些项目的

public void delete(){
                    jaEntrou = false;
                    ArrayList <Integer> apagar = new ArrayList<>();
                    Viagem aux;
                    List<String> listaUsuarios;
                    for(int i = 0 ; i < lista.size(); i++){
                        jaEntrou = false;
                        aux = lista.get(i);
                        listaUsuarios = aux.getUsuarios();
                        for(int j = 0; j < listaUsuarios.size(); j++){
                            if(listaUsuarios.get(j).equals(usuario)){
                                jaEntrou = true;
                            }
                        }
                        if(!jaEntrou){
                            apagar.add(i);
                        }
                    }
                    for(int i = apagar.size() - 1; i >= 0; i--){
                        int index = apagar.get(i);
                        lista.remove(index);
                        //adapter.removeItem(apagar.get(i));
                        //adapter.notifyDataSetChanged();
                    }
                    adapter.notifyDataSetChanged();
                    listView.invalidateViews();
                    listView.refreshDrawableState();
                    lista = fb.getLista();
                    Intent intent = new Intent(getApplicationContext(), OnlyDelay.class);
                    startActivity(intent);
}
public void delete(){
jaEntrou=假;
ArrayList apagar=新的ArrayList();
维亚吉姆奥克斯;
列表Ausuarios;
对于(int i=0;i=0;i--){
int index=apagar.get(i);
删除(索引);
//adapter.removietem(apagar.get(i));
//adapter.notifyDataSetChanged();
}
adapter.notifyDataSetChanged();
listView.invalidateViews();
listView.refreshDrawableState();
lista=fb.getLista();
Intent Intent=newintent(getApplicationContext(),OnlyDelay.class);
星触觉(意向);
}
我的自定义列表

package com.example.caronassuldeminas;

import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

public class Custom_List extends BaseAdapter {
    private List<Viagem> viagens;
    private Activity act;
    private Object orig;
    public Custom_List(List<Viagem> viagens, Activity act){
        this.viagens = viagens;
        this.act = act;

    }
    @Override
    public int getCount() {
        return viagens.size();
    }

    @Override
    public Object getItem(int position) {
        return viagens.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    public void removeItem(int position){
        viagens.remove(position);
    }

    public void attLista(List<Viagem> viagens){
        this.viagens = viagens;
    }

    public Viagem getViagem(int position){
        return viagens.get(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = act.getLayoutInflater().inflate(R.layout.list_item, parent, false);

        TextView cidadePartida = (TextView) view.findViewById(R.id.textView8);
        TextView cidadeChegada = (TextView) view.findViewById(R.id.textView9);
        TextView dia = (TextView) view.findViewById(R.id.textView10);
        TextView hora = (TextView) view.findViewById(R.id.textView11);
        cidadePartida.setText(viagens.get(position).getCidadePartida());
        cidadeChegada.setText(viagens.get(position).getCidadeChegada());
        dia.setText("Dia: " + viagens.get(position).getData());
        hora.setText("Hora: " + padronizaHora(viagens.get(position).getHora()) + "h");

        return view;
    }
    public String padronizaHora(String data){
        if(data.length() == 5)
            return data;
        int pos = 0;
        String resu = "";
        for(int i = 0; i < data.length(); i++){
            if(data.charAt(i) == ':'){
                pos = i;
                break;
            }
        }
        if(pos < 2){
            resu += "0";
        }
        resu += data.substring(0, pos);
        resu += ":";
        if(data.charAt(data.length()-1) == '0'){
            resu += "0";
        }
        resu += data.substring(pos + 1);
        return resu;
    }
}

package com.example.caronassuldeminas;
导入android.app.Activity;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.TextView;
导入java.util.List;
公共类自定义\u列表扩展BaseAdapter{
私人名单维亚根斯;
私人活动法;
私人物品来源;
公共定制清单(清单viagens,活动法){
this.viagens=viagens;
this.act=act;
}
@凌驾
public int getCount(){
返回viagens.size();
}
@凌驾
公共对象getItem(int位置){
返回viagens.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
公共无效删除项(内部位置){
过孔。移除(位置);
}
公共无效attLista(列表viagens){
this.viagens=viagens;
}
公共Viagem getViagem(内部位置){
返回viagens.get(位置);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=act.getLayoutFlater().充气(R.layout.list_项,父项,false);
TextView cidepartida=(TextView)view.findViewById(R.id.textView8);
TextView ciadechegada=(TextView)view.findViewById(R.id.textView9);
TextView dia=(TextView)view.findViewById(R.id.textView10);
TextView hora=(TextView)view.findViewById(R.id.textView11);
cidepartida.setText(viagens.get(position.getcidepartida());
cidadeChegada.setText(viagens.get(position.getCidadeChegada());
dia.setText(“dia:+viagens.get(position.getData());
hora.setText(“hora:+padronizaHora(viagens.get(position.getHora())+“h”);
返回视图;
}
公共字符串padronizaHora(字符串数据){
if(data.length()==5)
返回数据;
int pos=0;
字符串resu=“”;
对于(int i=0;i
通常,当我从驱动ListView和适配器的ArrayList中添加或删除项目时,我会重新创建适配器并将其重新分配给ListView,而不是调用notifyDatasetChanged。这似乎还可以防止任何崩溃,而崩溃很可能是由适配器试图引用不再存在的ArrayList元素引起的

    adapter = new TripSelectAdapter(this, thisContext, tripItems);
    mTripList.setAdapter(adapter);

张贴您的碰撞日志可能重复的