当前位置: 首页 > 知识库问答 >
问题:

使用EditText筛选回收视图

孔阎宝
2023-03-14

我有这个应用程序,它从MySql数据库中检索数据并将其解析为回收器视图。我有一个editText,我希望能够在键入时过滤回收器视图项目。

下面是我的主要活动(SearchAvtivity):

public class SearchActivity extends AppCompatActivity {
    private static final String TAG = "Search Activity";
    private Context mContext = SearchActivity.this;
    private static final int ACTIVITY_NUM = 1;

    String urlAddress = "myDatabaseAddressGoesHere.PHP";


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        Log.d(TAG, "onCreate: started");
        setupBottomNavigationView();
        final RecyclerView rv = (RecyclerView) findViewById(R.id.SearchRv);
        rv.setLayoutManager(new LinearLayoutManager(this));
        rv.setItemAnimator(new DefaultItemAnimator());
        Downloader dl = new Downloader(SearchActivity.this,urlAddress,rv);
        dl.execute();
     }
          
         

    /**
     * Setup Bottom Navigation View
     */

    private void setupBottomNavigationView(){
        Log.d(TAG, "setupBottomNavigationView: Setting up Bottom Navigation View");
        BottomNavigationViewEx bottomNavigationViewEx = (BottomNavigationViewEx)findViewById(R.id.bottom_nav_bar);
        BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx);
        BottomNavigationViewHelper.enableNavigation(mContext,bottomNavigationViewEx);
        Menu menu = bottomNavigationViewEx.getMenu();
        MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
        menuItem.setChecked(true);

    }
}

这是MyAdapter:

public class MyAdapter extends RecyclerView.Adapter<MyHolder> {

    Context c;
    ArrayList<SpaceCraft> spaceCrafts;
    List<MyHolder> displayedList;

    public MyAdapter(Context c, ArrayList<SpaceCraft> spaceCrafts) {
        this.c = c;
        this.spaceCrafts = spaceCrafts;
    }

    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_adapter_vertical,parent,false);
        return new MyHolder(v);
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position) {
        holder.nameTv.setText(spaceCrafts.get(position).getName());
        holder.addressTv.setText(spaceCrafts.get(position).getAddress());
        holder.phoneTv.setText(spaceCrafts.get(position).getPhone());
        holder.emailTv.setText(spaceCrafts.get(position).getEmail());

    }

    @Override
    public int getItemCount() {
        return spaceCrafts.size();
    }
}

Ido不知道您是否需要查看vlasses:下载器,解析器,连接器或支架。我请告诉我。

共有2个答案

濮阳唯
2023-03-14

您应该为RecyclerView使用TextWatcher()。

祁乐邦
2023-03-14

您可以在editText上使用TextWatcher执行此操作,并在其中过滤您的列表。

例:

 ((EditText) findViewById(R.id.your_edit_text)).addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

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

    @Override
    public void afterTextChanged(Editable s) {
        String text = s.toString();
        ArrayList<String> yourCopyList = new ArrayList<>(yourList)
        yourList.clear();
        if (text.isEmpty()) {
            addAllYourDataToList();
        } else {
            text = text.toLowerCase();
            for (int i = 0; i<yourCopyList.size(); i++) {
                // Adapt the if for your usage
                if (yourCopyList.get(i).getName().toLowerCase().contains(text)) {
                    yourList.add("the string");
                }
            }
        }
        adapter.notifyDataSetChanged();
    }
});

在此示例中,您将删除列表中的所有数据,并仅添加文本筛选器上对应的数据

 类似资料:
  • Android通用搜索功能似乎有很好的系统支持,除了语音搜索之外,还可以显示搜索建议,如最近的查询建议和自定义建议。 此框架要求声明搜索活动。该活动以意向获取查询,并将搜索结果呈现给列表视图。 我对此有两个问题: 1-我想在当前活动中进行搜索(我在应用程序栏上有一个搜索视图)。那么,该活动是否会重新启动?那会很奇怪。我应该发送到不可见的活动并获取结果吗?这可能吗? 2-我可以使用RecyclerV

  • 我试图在Fragment中实现一个带有建议(过滤器)的SearchView,但是我没有成功。我尝试了几乎所有的教程,但没有一个对我有效。我将感激任何帮助。谢谢你 可扩展置标语言... 碎片 适配器

  • 我在里面使用了。我还将设置为false for 支持较低的API

  • 大家好我需要帮助我第一次使用android studio java。。。这是我的界面 在此输入图像描述 我想恢复列表中的EditText值时,用户点击"valider la命令"

  • 我有一个带有viewpager的活动,并且在其中一个片段中,我使用带有视图项作为编辑文本的Recycler视图。这是我的代码。 在这里,我已经给edittext宽度作为match_parent(android:layout_width="match_parent"),但在运行时,它会根据提示的宽度进行包装。有人能帮我解决这个问题吗。 适配器: 片段: 片段布局:

  • 我正在尝试使用文本字段筛选表视图,我需要一个文本字段(txtSearch)来搜索“nhs编号”、“名字”、“姓氏”和“分类类别”。我曾尝试在网上实施各种解决方案,但没有成功,我对这一切还是新手,所以如果问得不好,我深表歉意。任何帮助都将不胜感激,我的代码如下。 公共类QueueTabPageController实现可初始化{ 此处出现错误(步骤4): 和(步骤5) 说明:无法从类型TableVie