在android中搜索功能

时间:2013-01-08 08:41:21

标签: android android-layout

我有一个列表视图并在其上应用搜索功能,使用以下内容:

inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,int before, int count) {
      // TODO Auto-generated method stub
      // When user changed the Text
      LabelUser.this.arrayAdapter.getFilter().filter(s);
}
@Override
public void beforeTextChanged(CharSequence s, int start,int count, int after) {
     // TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
    System.out.println("count"+s);
}});

在编辑文本中输入字符后,临时列表视图的索引会发生变化,我使用以下内容得到错误记录:

list.setOnItemClickListener(new OnItemClickListener() {
 @Override
public void onItemClick(AdapterView<?> arg0, View v,int position, long id) {
    // TODO Auto-generated method stub
    String selectedFromList = (list.getItemAtPosition(position).toString());
    Constants.LABELID = labelIdArray[(int) id];  
    System.out.println("id.LABELID"+id); 
    System.out.println("id.selectedFromList"+selectedFromList);
    startActivity(new Intent("com.example.mysampleapp.DASHBOARDTAB"));
}}); 

我希望在应用搜索后获得临时列表视图,以便我可以从原始列表视图中获取正确的索引,或者任何人都可以建议我在过滤列表视图适配器后从列表视图中获取字符串。

3 个答案:

答案 0 :(得分:0)

你可以将arraylist或数组传递给listview适配器,然后你可以检查arraylist或数组,如果你的单词在那里。然后拨打listview.setSelection(your_arraylist_current_position);

for(int i=0;i<arralist.size();i++)
{
    if(arraylist.get(i).startwith(searchingword))
      {
        listview.setSelection(i);
       }
}

答案 1 :(得分:0)

如果它的自定义列表视图在每行中都有TextView,那么你可以在listView.onItemClick中获取所选列表项的字符串,其中v是视图

TextView Selecteditem = (TextView) v.findViewById(R.id.textView_listitem);
String mText = Selecteditem.getText().toString();

答案 2 :(得分:0)

嘛!我做了同样的事情,但方式与你的不同。

以下是广泛的步骤:   - 当EditText中的文本发生更改时,您可以搜索列表并创建包含搜索项的临时List(ArrayList)。   - 然后通过调用listView.setAdapter(temporaryList);将ListView适配器设置为临时列表   - 另外,为isSearchOn定义一个标志。当EditText中的内容发生变化,而不是&#34;&#34;时,make isSearchOn = true,否则为false。   - 另一方面,在onItemClick,

if(isSearchOn)
   {
      //search temporaryList
   }
   else
   {
      //search originalList
   }

这样,您将始终获得正确的项目。希望这会有所帮助。