如何在 SearchView 中设置文本?

How to set Text in SearchView?

如何将数据传递给searchview?我正在传递数据,但我不知道如何在我的搜索视图中获取值,请帮助我

public static final String EXTRA_ID = "Id";

@BindView(R.id.svDetail)
android.support.v7.widget.SearchView svDetail;
@BindView(R.id.rvDetail)
RecyclerView rvDetail;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail_member);
    ButterKnife.bind(this);

    String id = getIntent().getStringExtra(EXTRA_ID);
    svDetail.setQuery(id,false);

当我使用 TextView 时 // tvdetail.setText(id); 它在工作,为什么不为 SearchView 工作?请帮忙

首先您需要检查您是否正在获取 Intent 中的数据,如下所示:-

       /// GETTING INTENT DATA
        Intent intent = getIntent();
        if (intent.hasExtra("EXTRA_ID")) {
            String id = getIntent().getStringExtra("EXTRA_ID");
              YOUR_SEARCHVIEW.setActivated(true);

                YOUR_SEARCHVIEW.onActionViewExpanded();
                YOUR_SEARCHVIEW.setIconified(false);
                YOUR_SEARCHVIEW.clearFocus();


 ///AT THE END YOU NEED TO SET THE TEXT
                YOUR_SEARCHVIEW.setQuery(id,false);

        }
        else {
            Log.e("NO DATA","NO DATA FOUND");
        }

另一个问题可能是您正在传递数据 Integer 值并获得 String 和反之亦然

我不知道如何将数据传递给搜索视图

但正如建议的那样:您可以使用 editText 并在其旁边放置一个搜索图标

whit editText 您可以使用此代码:

 EditText searchBar = findViewById(R.id.searchBar);

    searchBar.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable s) {}

        @Override
        public void beforeTextChanged(CharSequence s, int start,
                                      int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            Toast.makeText(MainActivity.this, "editText content changed", Toast.LENGTH_SHORT).show();

        }
    });

传递值只需写 searchBar.setText(id); ;此行运行 TextChangedListener,现在您的搜索栏也有一个文本更改侦听器