0

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

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"));
}}); 

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

4

3 回答 3

0

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

TextView Selecteditem = (TextView) v.findViewById(R.id.textView_listitem);
String mText = Selecteditem.getText().toString();
于 2013-01-08T08:58:35.103 回答
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);
       }
}
于 2013-01-08T08:51:46.540 回答
0

出色地!我做过同样的事情,但方式与你的不同。

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

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

这样,您将始终获得正确的项目。希望这可以帮助。

于 2013-01-08T14:02:33.233 回答