Поиск текста с помощью кнопки с помощью SearchView - PullRequest
0 голосов
/ 08 мая 2019

Как я могу получить текст от кнопки, которую я создал во фрагменте, чтобы показать, когда пользователь нажимает на значок SearchView на панели инструментов.До сих пор, когда кнопка поиска на панели инструментов нажимается внутри фрагмента, он у меня работает, так что пользователь может печатать с помощью панели поиска, но как мне сделать так, чтобы, когда пользователь что-то печатал, кнопки изображения показывались на основетекст каждой кнопки.

My main xml выглядит следующим образом:

<item
      android:id="@+id/search_button"
      android:icon= "@drawable/ic_search_black_24dp"
      android:title="Search"
      app:actionViewClass="android.support.v7.widget.SearchView"
      app:showAsAction= "always"/>

In Мой класс фрагмента Я пытался сделать это:

private SearchView searchView = null;
private SearchView.OnQueryTextListener queryTextListener;
List<String> textContent = new ArrayList();

public Other() {
     // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                            Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_other, container, false);

    //Small example
    Button home1 =(Button) view.findViewById(R.id.BeefRendang);
    Button home2 =(Button) view.findViewById(R.id.AyamMasakMerah);

    home1.setOnClickListener(this);
    home2.setOnClickListener(this);

    //I tried using a arraylist called text content to get button text
    textContent.clear();
    textContent.add((String) home1.getText());
    textContent.add((String) home2.getText());

    return view;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.main, menu);
    MenuItem searchItem = menu.findItem(R.id.search_button);
    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);

    if (searchItem != null) {
        searchView = (SearchView) searchItem.getActionView();
    }
    if (searchView != null) {
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));

        queryTextListener = new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextChange(String newText) {
                Log.i("onQueryTextChange", newText);

                return true;
            }
            @Override
            public boolean onQueryTextSubmit(String query) {
                Log.i("onQueryTextSubmit", query);
                for(String text : textContent) {
                    if(text.contains(query)) {
                        return true ;
                    }
                }

                return false;
            }
        };
        searchView.setOnQueryTextListener(queryTextListener);
    }
    super.onCreateOptionsMenu(menu, inflater);
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.search_button:
            // Not implemented here
            return false;
        default:
            break;
    }
    searchView.setOnQueryTextListener(queryTextListener);
    return super.onOptionsItemSelected(item);
}

//On click method
@Override
public void onClick(View v) {
    switch(v.getId()){
        case R.id.BeefRendang:
            Intent in = new Intent(getActivity(), BeefRendang.class);
            startActivity(in);
            break;
        case R.id.AyamMasakMerah:
            Intent in2 = new Intent(getActivity(), AyamMasakMerah.class);
            startActivity(in2);
            break;
}

На кнопке image xml это выглядит так:

<!-- Beef Rendang-->
<Button
    android:id="@+id/BeefRendang"
    android:layout_width="match_parent"
    android:layout_height="140dp"
    android:layout_marginLeft="7dp"
    android:layout_marginTop="1dp"
    android:layout_marginRight="7dp"
    android:background="@drawable/beefrendangcard"
    android:text="Beef Rendang"
    android:textSize="0sp"
    android:scaleType="fitStart" />


<!-- Ayam Masak Merah   -->
<Button
    android:id="@+id/AyamMasakMerah"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_marginLeft="7dp"
    android:layout_marginTop="1dp"
    android:layout_marginRight="7dp"
    android:background="@drawable/ayammasakmerahcard"
    android:text="Ayam Masak Merah"
    android:textSize="0sp"
    android:scaleType="fitStart" />
...