2017-08-08 12 views
1

私は会社のリストを表示する配列リストを持っています。これらの企業のそれぞれは、それに関連する町の名前を持っています。私が行ったことは、街の名前のいずれかをクリックすると、ArrayListをフィルタリングし、その町の名前を持つ会社だけを表示するように、各町の名前のボタンを作成していることです。私はのようなボタンを作成していArrayListフィルタリングが機能しない:Android

、私はデータをフィルタリングするメソッドを呼び出していますボタンをクリックすると

 stringList.add(tempList.get(n).getTownName()); 
     btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 60)); 
     btnTag.setText(stringList.get(k)); 
     btnTag.setBackgroundResource(R.drawable.alpha_button_selector); 
     btnTag.setClickable(true); 
     townLayout.addView(btnTag); 

、データをフィルタリングし、私はに新しいのArrayListを作成していますについて

 btnTag.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       locationFilter(stringList,length); 
      } 
     }); 

 ArrayList<CompanySearchResult> secondList = new ArrayList<CompanySearchResult>(); 

     for (CompanySearchResult a : tempList) { 
      for (int k = 0; k < length; k++) { 

       if (a.getTownName.equalsIgnoreCase(stringList.get(k))) { 
        secondList.add(a); 
       } 
      } 
     } 

     tempList.clear(); 
     tempList.addAll(secondList); 

私が実際にやろうとしているのはフィルタリングですボタンがクリックされたときの町の名前による一時リスト。

私はこれについて調査しましたが、問題を解決できませんでした。誰かが私に何が間違っているのかを教えてもらえますか?どのようにリストをフィルタリングできますか?

+0

あなたのリストは、実際にリストビューに入力されますか? TempListまたは他のリスト? –

+0

ビューにtempListが設定されます。 – devgeek

+0

その後、addAllを実行した後、notifyDataSetChanged()メソッドを呼び出しましたか? –

答えて

0

ここで問題となったのは、町の名前(削除された重複)の数に基づいてボタンがプログラムで作成されていたため、stringList.get(k)はクリックされたボタンに正しく対応する町名を教えてくれませんでした。

はこのように、ボタンをクリックすることで、私は私のフィルタ法では、メソッドにデータをフィルタリングすること

btnTag.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      CharSequence name = btnTag.getText(); 
      locationFilter(name); 
     } 
    }); 

を渡され、それが町の名前を表示するよう、ボタンのテキストをフェッチして、私は変更しましたto、

 ArrayList<ACompanyForSearchResult> filtered = new ArrayList<ACompanyForSearchResult>(); 

     for (ACompanyForSearchResult town : tempList) { 

      if (town.getTownName().equals(name)) { 
       filtered.add(town); 
      } 
     } 

     tempList.clear(); 
     tempList.addAll(filtered); 
     listAdapter.notifyDataSetChanged(); 
関連する問題