Android ArrayAdapter和ListAdapter冲突

Android ArrayAdapter和ListAdapter冲突,android,listview,android-studio,android-arrayadapter,Android,Listview,Android Studio,Android Arrayadapter,我正在尝试在listview中执行搜索。Listview从db获取所有信息并显示它们。问题是搜索的ArrayAdapter与listview的ListAdapter存在冲突。因为如果在ListAdapter之前执行搜索,则搜索不起作用,如果我将其放在ListAdapter下面,则搜索起作用,但在另一页上,则不会显示其他信息 private void updateList() { ListView lv = getListView(); Set<String

我正在尝试在listview中执行搜索。Listview从db获取所有信息并显示它们。问题是搜索的ArrayAdapter与listview的ListAdapter存在冲突。因为如果在ListAdapter之前执行搜索,则搜索不起作用,如果我将其放在ListAdapter下面,则搜索起作用,但在另一页上,则不会显示其他信息

 private void updateList() {
        ListView lv = getListView();
        Set<String> unionSet = new HashSet<String>();
        for (HashMap<String, String> hashMap : mPlatesList) {
            for(String key : hashMap.keySet())
                if(key.equals(TAG_TARGA))
                    unionSet.add(hashMap.get(key));
        }

        String[] table = unionSet.toArray(new String[unionSet.size()]);
        inputSearch = (EditText) findViewById (R.id.searchText);
        myAdapter = new ArrayAdapter<String>(this, R.layout.plates_search, R.id.plates_search, table);
        lv.setAdapter(myAdapter);

        inputSearch.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                Lista.this.myAdapter.getFilter().filter(cs);
            }
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
            }
            @Override
            public void afterTextChanged(Editable arg0) {
            }
        });

        ListAdapter adapter = new SimpleAdapter(this, mPlatesList,
                R.layout.plates, new String[] { TAG_TARGA, TAG_NGJYRA, TAG_MARKA, TAG_SIGURACION, TAG_GJOBA, TAG_PRONAR, TAG_SGS },
                new int[] { R.id.title, R.id.ngjyra, R.id.marka, R.id.siguracion, R.id.gjoba, R.id.pronar, R.id.sgs});
        setListAdapter(adapter);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {

                String targa = ((TextView)view.findViewById(R.id.title)).getText().toString();
                String ngjyra = ((TextView)view.findViewById(R.id.ngjyra)).getText().toString();
                String marka = ((TextView)view.findViewById(R.id.marka)).getText().toString();
                String siguracion = ((TextView)view.findViewById(R.id.siguracion)).getText().toString();
                String gjoba = ((TextView)view.findViewById(R.id.gjoba)).getText().toString();
                String sgs = ((TextView)view.findViewById(R.id.sgs)).getText().toString();
                String pronar = ((TextView)view.findViewById(R.id.pronar)).getText().toString();
                String username = getIntent().getExtras().getString("Username");

                Intent intent = new Intent(Lista.this,Info.class);
                intent.putExtra("Targa",targa);
                intent.putExtra("Ngjyra",ngjyra);
                intent.putExtra("Marka",marka);
                intent.putExtra("Gjoba",gjoba);
                intent.putExtra("Siguracion",siguracion);
                intent.putExtra("Sgs",sgs);
                intent.putExtra("Pronar",pronar);
                intent.putExtra("Username",username);
                startActivity(intent);
            }
        });
    }

问题是,如果搜索位于ListAdapter上方,则另一页上显示的R.id.title、R.id.ngjyra、R.id.marka、R.id.siguracion、R.id.gjoba、R.id.pronar、R.id.sgs为空,否则会显示另一页上的信息,但搜索不起作用。怎么办?

在你的监听器中,你不应该从列表中读取,而应该从你的数据源中读取。由于这个原因,您通过了职位,所以您应该能够从表中检索正确的、相应的数据

您可以在此处参考CustomSearch功能,您需要为此编写CustomAdapter->


但是从桌子上我只看到了Targa而不是Ngjyra,Marka等等。。。我需要这些其他,以便在其他页面上显示,然后您可以重新考虑,如果您使用的是正确的适配器。显然,StringAdapter太有限了。例如,使用ArrayAdapter并使数据源中的数据完整。我使用ArrayAdapter是什么意思?你的意思是你不能将数据从一个页面重新保存到另一个页面?
    public void search() {
        ListView lv = getListView();
        Set<String> unionSet = new HashSet<String>();
        List<Map<String, String>> mPlateClone = new ArrayList<Map<String, String>>(
                mPlatesList);
        for (Map<String, String> hashMap : mPlateClone) {
            for (String key : hashMap.keySet())
                if (key.equals(TAG_TARGA))
                    unionSet.add(hashMap.get(key)); 
        }

        String[] table = unionSet.toArray(new String[unionSet.size()]);
        inputSearch = (EditText) findViewById(R.id.searchText);
        // myAdapter = new ArrayAdapter<String>(this, R.layout.plates,
        // R.id.title,
        // table);
        // lv.setAdapter(myAdapter);

        inputSearch.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2,
                    int arg3) {

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                    int arg2, int arg3) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                // // ((SimpleAdapter)
                // //
                // adapter).getFilter().filter(inputSearch.getText().toString().trim());
                ((SimpleAdapter) Lista.this.adapter).getFilter().filter(
                        inputSearch.getText().toString().trim());

            }
        });
    }