列表搜索错误

Error in list search

我更新listview的数据有困难,我在listview中开发了搜索功能,我可以搜索数据,但我需要访问详细信息,传递给一个activity,当我这样做时,传递的数据是第一个列表的 id 0 的数据......也就是说,只有视图正在更新而不是数据。有人知道怎么解决吗?

搜索Activity

public class PesquisaTesteActivity extends AppCompatActivity {

public static TextView txt;
public static List<PesquisaBD> lista_produtos;
public static ListView lv;
AdapterBDLocal adapter;
private Button btn;
public static ArrayList list = new ArrayList();
private EditText searchView;
private AlertDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pesquisa_teste);

    lv = (ListView)findViewById(R.id.lv2);

    searchView = (EditText) findViewById(R.id.search);

    lista_produtos = DataBaseClass.getInstance(getApplicationContext()).getAllProdutos();

    txt = findViewById(R.id.textView);


    adapter = new AdapterBDLocal(PesquisaTesteActivity.this,  lista_produtos);

    searchView.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {

           final List<PesquisaBD> filtro = filter(lista_produtos,s.toString());
           adapter.setFilter(filtro);
           lv.setAdapter(adapter);


        }
    });

    btn = (Button) findViewById(R.id.btn_te);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(PesquisaTesteActivity.this, Scan3Activity.class);
            startActivity(i);

        }
    });


    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Intent inte = new Intent(PesquisaTesteActivity.this, DetalhesPesquisaActivity.class);
            inte.putExtra("nome", lista_produtos.get(i).getNome_completo());
            inte.putExtra("codigo", lista_produtos.get(i).getCodigo_barras());
            inte.putExtra("imagem", lista_produtos.get(i).getImagem());
            inte.putExtra("unidade", lista_produtos.get(i).getUnidade());
            inte.putExtra("preco", lista_produtos.get(i).getPreco());

            startActivity(inte);
        }
    });




    lv.setAdapter(adapter);


}


private List<PesquisaBD> filter(List<PesquisaBD> lista, String query){
    query = query.toLowerCase();
    final List<PesquisaBD> filtro = new ArrayList<>();

    for(PesquisaBD p : lista){
        final String texte = p.getNome_completo().toLowerCase();
        if(texte.startsWith(query)){
            filtro.add(p);

        }
    }

    return filtro;

 }
}

适配器

public class AdapterBDLocal extends BaseAdapter{
private Context mContext;
private List<PesquisaBD> produtosList = new ArrayList<>();
 private Filter filter;


public AdapterBDLocal(Context mContext, List<PesquisaBD> produtosList) {
    this.mContext = mContext;
    this.produtosList = produtosList;
}

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

@Override
public Object getItem(int i) {
    return produtosList.size();
}

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

@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
    View listItem = view;
    if(listItem == null)
        listItem = LayoutInflater.from(mContext).inflate(R.layout.item_lista_pesquisa,viewGroup,false);

    final PesquisaBD p = produtosList.get(i);

    ImageView img_produto_pesquisa = listItem.findViewById(R.id.img_produto_pesquisa);

    TextView nome = (TextView) listItem.findViewById(R.id.txt_nome_produto2);
    nome.setText(p.getNome_completo());

    TextView categoria = (TextView) listItem.findViewById(R.id.txt_categoria2);
    categoria.setText(p.getPreco());

    TextView unidade = (TextView) listItem.findViewById(R.id.txt_unidade2);
    unidade.setText(p.getUnidade());

    ImageView btn_add = (ImageView)listItem.findViewById(R.id.btn_add);
    ImageView btn_rem = (ImageView)listItem.findViewById(R.id.btn_rem);

    if(p.getImagem() == null){
        Picasso.with(mContext).load(R.drawable.ic_logo).fit().into(img_produto_pesquisa);
    } else {

        //Picasso.with(mContext).load(p.getImagem()).networkPolicy(NetworkPolicy.OFFLINE).fit().into(img_produto_pesquisa);
        Glide.with(mContext).load(p.getImagem()).into(img_produto_pesquisa);

    }
    btn_add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String m = p.getCodigo_barras();
            if(list.size()<=9){
                list.add(m);
                txt.setText(list.toString());
                Toast.makeText(mContext, "Adiconado", Toast.LENGTH_SHORT).show();
                if(txt.getText()!= null){

                }

            } else{
                Toast.makeText(mContext, "Sua Lista esta grande demais!", Toast.LENGTH_SHORT).show();
            }

        }
    });

    btn_rem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String m = p.getCodigo_barras();
            list.remove(m);
            txt.setText(list.toString());
            Toast.makeText(mContext, "Removido da lista!", Toast.LENGTH_SHORT).show();

        }
    });

    return listItem;
}

public void setFilter(List<PesquisaBD> l) {
    produtosList = new ArrayList<PesquisaBD>();
    produtosList.addAll(l);
    notifyDataSetChanged();
 }

}

在你的适配器中使用这个:- produtosList.clear(); 而不是

produtosList = new ArrayList<PesquisaBD>();

public void setFilter(List<PesquisaBD> l) { produtosList.clear(); produtosList.addAll(l); notifyDataSetChanged(); }