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

edit-text に文字を入力した後、一時リスト ビューのインデックスが変更され、次を使用して間違ったレコードが取得されます。

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

良い!私は同じことをしましたが、あなたのものとは異なる方法で。

大まかな手順は次のとおりです。 - 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 に答える
0

配列リストまたは配列をリストビューアダプターに渡すことができます。次に、配列リストまたは配列に単語が含まれているかどうかを確認できます。それから電話する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 に答える