2016-12-28 1 views
0

검색은 여기가 내가 페이지의 자바 파일에서 사용하는 코드는 어떻게 만들어 SearchView :는 SearchView 내가 <code>SearchView</code>까지 준비가

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.options_menu, menu); 

     // Associate searchable configuration with the SearchView 
     SearchManager searchManager = 
       (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     SearchView searchView = 
       (SearchView) menu.findItem(R.id.search).getActionView(); 
     searchView.setSearchableInfo(searchManager.getSearchableInfo(
       new ComponentName(getApplicationContext(), SearchableActivity.class))); 


     return true; 
    } 

내 목표는이 SearchView 검색을 수 있도록 지금 TextView로 가득 찬 사이트를 통해. 모든 TextView에는 한 단어가 들어 있습니다. SearchView에 방금 입력 한 단어가 포함 된 TextView을 찾을 수 있습니까? 그렇다면 어떻게? 그렇지 않다면 다른 방법으로 어떻게 만들 수 있습니까?

종류와 관련, 줄리안

+1

이 링크를 시도하십시오 : http://stackoverflow.com/questions/30398247/how-to-filter-a-recyclerview-with-a-searchview –

답변

2

, 최근에 사용 된 키워드 당신이 찾는 '검색 모델 "을 구현해야 등을 보여 전혀 검색하지 않습니다, 그것은 키워드를 입력하는 간단한 위젯 년대 SearchView 내용을 표시하고 원하는 위치에 표시 할 수 있습니다.

+0

내 질문에 잘못된 것 같아서 나쁘다. 그래서 모든 것을 다 설정 했으므로, 다음 단계는 Querys 나 그와 같은 테이블이나 가상 테이블을 정의하는 것입니다. 그러나 TextViews를 검색하려면 찾고자하는 것이 아닌 것 같습니다. 그래서 기본적으로 질문은, 만약 내가 목표를위한 가상 테이블을 만들어야한다는 것입니다. – user7342339

+0

@ user7342339 "TextViews 검색"이란 무엇입니까? 'TextView' 위젯에 표시된 텍스트를 검색 하시겠습니까? 그게 실제로 원하는 경우 (예 : sqlite db와 같은 모델에서 검색하는 대신)'TextView.getText() '를 사용하여 각 텍스트보기 위젯의 내용을 가져올 수 있습니다. – xizzhu

+0

저는 약 40 개의 TextViews에 모두 한 단어가 들어 있습니다. 내가하고 싶은 것은 TextViews 내에서 단어를 검색하는 것이지만 SearchViews와 그 모든 것과 연결되어있는 모든 것을 찾을 방법을 모르겠습니다. – user7342339

1
@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search)); 
     SearchManager searchManager = (SearchManager) getSystemService(Activity.SEARCH_SERVICE); 
     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

// Setting up custom search button icon 
     int searchImgId = android.support.v7.appcompat.R.id.search_button; // I used the explicit layout ID of searchview's ImageView 
     ImageView v = (ImageView) searchView.findViewById(searchImgId); 
     v.setImageResource(R.drawable.ic_search_black); 
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       // Do operation 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       return false; 
      } 
     }); 

     return true; 
    } 

menu_search.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:appcompat="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/menu_search" 
     style="@android:style/Widget.ActionButton" 
     android:icon="@drawable/ic_search_black" 
     android:title="@string/search" 
     appcompat:actionViewClass="android.support.v7.widget.SearchView" 
     appcompat:showAsAction="always" /> 
</menu> 
+0

그것은 getActivty() 메서드를 해결할 수 없다고 말합니다. 신참 실수입니까? : D – user7342339

+0

getActivity()는 컨텍스트 친구로 바꿀 수 있습니다 ... getActivity() 대신 ** getApplicationContext() ** 또는 ** context ** ** 코드가 활동중인 경우 제거 * * getActivity(). ** 위에서 언급 한 해결책을 시도하는 것보다 단편을 사용하는 경우. –

+0

마지막 줄의 목표는 무엇입니까? andCreateOptionsMenu를 androidViewMenuInflate에 적용 할 수 없으므로 (menu, inflate)도 빨간색으로 표시되기 때문에 빨간색으로 표시됩니다. 도움 btw 주셔서 감사합니다! – user7342339

1

내가 무엇을 당신이하려고하는 것은 레이아웃 내에 정의 TextViews 내부의 텍스트를 검색 것 같다. 여기 가정하고 텍스트 소스가있는 파일 "Data.java의 String 배열/ArrayList를 (TextViewData)

당신이 시도 줄 수 있습니다.

1) 활동/단편 확인을 implement SearchView.OnQueryTextListener

2) 항목의 검색 결과를 저장하는 빈의 ArrayList를 작성합니다.

private ArrayList<Data> mSearchItems 

3) 당신이 당신의 SearchView를 초기화 코드이 줄을 추가

,
searchView.setOnQueryTextListener(this); 

4) 재정의 다음과 같은 방법 :

전) 메서드 호출이 제출 검색 상자

@Override 
public boolean onQueryTextChange(String query) { 
    handleSearch(query, Data.TextViewData) 
} 

5의 텍스트를 변경 호출

@Override 
    public boolean onQueryTextSubmit(String query) { 
    //Call a user defined mathod to handle the search. 
    handleSearch(query, Data.TextViewData) 
} 

II) 방법)

private void handleSearch(String Query, ArrayList<Data> queryList){ 
mSearchItems.clear(); 
for(Data data : queryList){ 
    if(data.textviewone.toLowerCase().contains(Query.toLowerCase()) || 
    data.textviewtwo.toLowerCase().contains(Query.toLowerCase())) 
    mSearchItems.add(data); 
    //You can then swap the recycler view (if being used) or hide other text views and display only the one being searched for (in case of a match) 
    } 
} 
+0

그래서 TextList를 ArrayList 안에 저장해야합니까? – user7342339

+0

"text"정확히 일치하고 TextViews가 아님 –

+0

예 : textview가 textview이고 텍스트 목록이 textData 인 TextView가있는 경우. 그리고 TextView에 "My name is userxyz"라고 표시하고 싶습니다. 다음과 같이 텍스트를 목록에 추가 할 수 있습니다. textData.add ("My name is userxyz"); 텍스트보기 안에 다음과 같이 표시하십시오. TextView txt = (TextView) findViewById (R.id.textviewone); txt.setText (textData.get (0)); –