首页 > 解决方案 > 如何在不点击任何内容的情况下将 json 数据传递到新活动和自动搜索中的搜索视图?

问题描述

我正在设置一个应用程序,让用户点击一所学校并获得该学校的SAT分数。我正在从 Jsons 获取所有数据。我希望用户点击学校,并将“dbn”文本传递给下一个活动,并将“dbn”文本放入搜索视图。

在我的 searchview 所在的第二个 Activity 中,数据被放入 SearchView 但列表不会更新,直到我单击两次以退出 SearchView。我只想让 SearchView 输入文本并进行搜索,而无需用户触摸任何东西。

MyViewHolderActivity

 @NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int 
 i) {

    View view ;
    LayoutInflater inflater = LayoutInflater.from(mContext);
    view = inflater.inflate(R.layout.school_row_item, viewGroup, false);
    final MyViewHolder viewHolder = new MyViewHolder(view);

    viewHolder.layout_school.setOnClickListener(new View.OnClickListener() 
 {
        @Override
        public void onClick(View view) {

            Intent i = new Intent(mContext, SATActivity.class);
            i.putExtra("dbn", 
 mDataSchool.get(viewHolder.getAdapterPosition()).getDbn());

            mContext.startActivity(i);

        }
    });

    return viewHolder;

第二次活动

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {

    String dbn = getIntent().getExtras().getString("dbn");

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);

    MenuItem searchItem = menu.findItem(R.id.search);
    searchItem.expandActionView();

    SearchView searchView = (SearchView) searchItem.getActionView();
    searchView.setQuery(dbn, true);

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            s = getIntent().getExtras().getString("dbn");
            myadapter.getFilter().filter(s);
            return true;
        }
    });

    return true;
}

我希望用户从第一个活动中单击 RecyclerView 项目并将“dbn”信息发送到第二个活动搜索视图并让它搜索和更新列表,而无需用户触摸任何东西。

按照建议的链接更新更新的代码。数据被发送到 searchview 但它不会搜索和更新列表,除非我按两次。

标签: javajsonsearchview

解决方案


推荐阅读