2016-11-18 1 views
1

검색 결과를 검색 할 수 있는지 알아야합니다. 예를 들어 바나나 쉐이크, 바나나 아이스크림, 사과 주스, 바나나 주스, 애플 파이 등의 항목이있는 목록보기가 있고 검색 결과가 BANANA이므로 결과가 (바나나 쉐이크, 바나나 아이스크림, 바나나 쥬스)이며 내 이전 검색 아래에 JUICE를 입력하면 다른 검색이 있으며 BANANA JUICE가 나타납니다. 나는 당신이 나를 이해하고 누군가가이 질문에 대해 나에게 빨리 대답 할 수 있기를 바랍니다. 여기 내 코드가 어떻게 생겼는지입니다. BTW 내가 2 검색보기를 만들 때이 일을하려고하면 검색 결과 사이에 (APPLE JUICE, BANANA JUICE) beucase 아무런 연관이 없습니다. 제발 도와주세요.검색 결과를 검색 할 수있는 방법이 있습니까?

public class recepies extends Activity { 
ListView lv; 
SearchView sv; 
SearchView sv2; 
String[] recepies={"Čili Piletina\n"+ " pileće belo meso \n"+" crvena  paprika \n"+" čili papričica \n"+" crveni pasulj \n"+" kukuruzni šećer \n"+" paradajz pelat\n"+" kisela pavlaka\n"+ " biljni začin\n "+ " biber\n "+" ulje ", 
     "Prženija sa svinjskim butom\n" +" svinjski but\n"+" kiseli krastavčići\n , kisala paprika\n,tucana paprika,biljni začin,biber,origano ulje, so, lovorov list", 
     "Peketići od integralnih palačinki\n" + "integralno brašno ,voda, soda bikarbona, ulje, kisela pavlaka, krastavac, paradajz, kikiriki", 
     "Ćufte od mesa i karfiola (hrono recept)\n" + "mleveno meso, karfiol, crni luk, beli luk, peršun, belance, so, biber, kurkuma, ulje, tikvice, sok od paradajza", 
     "Paprika punjena rižom i piletinom\n" +"paprika babura,belo meso,šargarepa,crni luk,pirinač,paradajz,sok od paradajza,biljnog začina,so,biber, kari,peršun, maslinovo ulje,", 
     "Piletina u sosu od nara\n" +"belo meso,\n" + "soja sos,\n" + "biber,\n" + "kurkuma,\n" + "luk,\n" + "soka od nara,\n" + "đumbir,\n" + "pirinač,\n" + "čili ili tabasko sos,\n" + "bbq ili roštilj sos," 
}; 


ArrayAdapter<String> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_recepies); 
    registerClickCallback(); 
    lv=(ListView) findViewById(R.id.listView); 
    sv=(SearchView) findViewById(R.id.searchView1); 
    sv2=(SearchView) findViewById(R.id.searchView2); 
    adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,recepies); 
    lv.setAdapter(adapter); 
    sv2.setOnQueryTextListener(new OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String text) { 
      // TODO Auto-generated method stub 
      return false; 
     } 
     @Override 
     public boolean onQueryTextChange(String text) { 
      adapter.getFilter().filter(text); 
      return false; 
     } 
    }); 
    sv.setOnQueryTextListener(new OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String text) { 
      // TODO Auto-generated method stub 
      return false; 
     } 
     @Override 
     public boolean onQueryTextChange(String text) { 
      adapter.getFilter().filter(text); 
      return false; 
     } 
    }); 

} 
private void registerClickCallback(){ 
    lv=(ListView) findViewById(R.id.listView); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) { 
       TextView textView= (TextView) viewClicked; 
       if(position==0){ 
        goToRecepie1(); 
       }else if(position==1){ 
        goToRecepie2(); 
       }else if(position==2){ 
        goToRecepie3(); 
       }else if(position==3){ 
        goToRecepie4(); 
       }else if(position==4){ 
        goToRecepie5(); 
       }else if(position==5){ 
        goToRecepie6(); 
       } 
     } 
    }); 
} 

private void goToRecepie6() { 
    Intent intent = new Intent(this, Recepie6.class); 

    startActivity(intent); 
} 

private void goToRecepie5() { 
    Intent intent = new Intent(this, Recepie5.class); 

    startActivity(intent); 
} 

private void goToRecepie4() { 
    Intent intent = new Intent(this, Recepie4.class); 

    startActivity(intent); 
} 

private void goToRecepie3() { 
    Intent intent = new Intent(this, Recepie3.class); 

    startActivity(intent); 
} 

private void goToRecepie2() { 
    Intent intent = new Intent(this, Recepie2.class); 

    startActivity(intent); 
} 

private void goToRecepie1() { 
    Intent intent = new Intent(this, Recepie1.class); 

    startActivity(intent); 
} 

}

+0

'sv'의 텍스트에'sv2'라는 접두사를 붙이고 그 방식으로 필터를 적용 할 수 있습니다 ... – donkon

+0

필터가 정규 표현식을 사용하는지 모르겠습니다. 너는 그것을 시도 할 수있다. 그것도 작동하지 않으면 ArrayAdapter에 항목을 채울 때 (정규식을 사용하여) 직접 필터링을 수행 할 수 있습니다. –

+0

배열 어댑터와 simplelist1을 사용하여 전체 어댑터 코드 어댑터 = new ArrayAdapter (this, android.R.layout.simple_list_item_1, recepies); lv.setAdapter (adapter); –

답변

2

에서는 스캔 목록에서 원하는 모든 요소 각 검사에 대한 확인합니다. 당신은 배열을 사용하는 경우 n 번째 요소는 당신이

편집을 검색하는 단어를 포함하는 경우, 당신은 확인할 수 있습니다 꺼내하기 위해이 XML을 사용하지 않고 예입니다

+1

고마워. 나는 그것을하려고합니다. –

+0

작동하는 경우 다른 사람들이 볼 수 있도록 upvote로 자유롭게 느껴보세요! :) –

+0

또한 올바른 답을 찾으면 작동으로 표시하는 것을 잊지 마십시오. 그렇게하면 스레드가 닫히고 같은 문제가있는 다른 사람도 답을 얻을 수 있습니다! :) 행운을 빌어 요 –

2

"입니다"했다.

List<String> menu = new ArrayList<String>(); 
List<String> filtered = new ArrayList<String>(); 
String found; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    menu.add("APPLE JUICE"); 
    menu.add("BANANA JUICE"); 
    menu.add("MANGO JUICE"); 
    menu.add("BANANA SMOOTHIE"); 
    menu.add("PINEAPPLE JUICE"); 
    menu.add("APPLE CIDER"); 
    menu.add("BANANA MILKSHAKE"); 

    for (int i =0;i < menu.size();i++) 
    { 
     if (menu.get(i).contains("BANANA")) 
     { 
      filtered.add(menu.get(i)); 
      Log.i("AppInfo","1st Filter Round: "+menu.get(i)); 
     } 
    } 

    for (int j = 0; j < filtered.size(); j++) 
    { 
     if (filtered.get(j).contains("JUICE")) 
     { 
      found = filtered.get(j); 
      Log.i("AppInfo","Final Found: "+found); 
     } 
    } 

} 

for 루프 내의 if 문을 사용자가 입력 한 문자열로 바꿉니다. 이게 도움이 되었기를 바랍니다.

관련 문제