如何将搜索结果复制到向量中?

时间:2014-10-30 06:26:45

标签: android listview search vector

我有一个EditText框,用作搜索框和一些项目列表。 当在搜索时创建新列表时,我已经实现了将原始列表的数组复制到向量。 现在我想使用OnItemClickListener来访问项目的详细信息(就像我们在搜索联系人时一样)。 以下是我的代码:

ListView slist;
private ArrayAdapter<String> arrayAdapter;
int flag=0;

Vector<String> searchResults =new Vector<String>();
String [] SR;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_route);

     // Load all data
    slist=(ListView)findViewById(R.id.listView1);
    arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Data.supplier_names);
    slist.setAdapter(arrayAdapter);

    slist.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            Log.d("Clicked Item",slist.getItemAtPosition(arg2).toString());
        }
    });

    // Get the intent, verify the action and get the query
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) 
    {
      String query = intent.getStringExtra(SearchManager.QUERY);
      Log.d("Search Query - ",query);

      // ###  searching valid supplier list
      for(int i=0;i<Data.supplier_names.length;i++)
      {
          if(Data.supplier_names[i].toUpperCase().contains(query.toUpperCase()))
          {
              Log.d("search result - ", Data.supplier_names[i]);
              searchResults.add(Data.supplier_names[i]);
          }
      }
      Log.d("Vector Size - ",searchResults.size() + " ");

      // ### creating string array
      SR=new String[searchResults.size()];
      for(int i=0;i<searchResults.size();i++)
      {
         SR[i]=searchResults.get(i).toString(); 
         Log.d("String array - ", SR[i]);
      }

      if(SR.length!=0)
      {
        arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,SR);
        slist.setAdapter(arrayAdapter);
      }

    }
}

请协助我查询。

1 个答案:

答案 0 :(得分:0)

如果要实时过滤数据,请使用适配器中的过滤器。这是一个例子:https://stackoverflow.com/a/26506506/3864698