创建简单的搜索功能

如何解决创建简单的搜索功能

我试图了解如何在应用中创建搜索功能。我浏览了创建搜索界面文档,但它很难,是的,我需要帮助。但是,我确实成功地创建了一个搜索界面,显示了基于字符串数组的结果。它确实有效,但它背后没有任何活动或任何意图。它更像是一个简单的文本搜索。我只是想知道我可以放可以同时处理字符串的 int 吗?

或者任何解决方案和想法,真的很感激。

现在这是我的 homefragment 类

package com.example.testtt;

import androidx.cardview.widget.CardView;
import androidx.fragment.app.Fragment;;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SearchView;

import androidx.annotation.Nullable;

import java.util.ArrayList;


public class HomeFragment extends Fragment implements View.OnClickListener {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container,Bundle savedInstanceState) {


        View v = inflater.inflate(R.layout.fragment_home,container,false);

        //define
        RelativeLayout drawerlayouthome;
        ListView list;
        ListViewAdapter adapter;
        SearchView editsearch;
        ArrayList<DoaSearchIndex> arrayList = new ArrayList<DoaSearchIndex>();




        String[] doasearchindex = getActivity().getResources().getStringArray(R.array.doasearchindex);

        //locatelistview
        list = v.findViewById(R.id.searchlistview);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView,View view,int i,long l) {
                list.setVisibility(View.INVISIBLE);
            }
        });

        for (int i = 0; i < doasearchindex.length; i++) {
            DoaSearchIndex doaSearchIndex = new DoaSearchIndex(doasearchindex[i]);

            arrayList.add(doaSearchIndex);
        }

        //pass result to listviewadapter.class

        adapter = new ListViewAdapter(this.getActivity(),arrayList);

        //binds adapter to listview

        list.setAdapter(adapter);
        list.setVisibility(View.INVISIBLE);

        //locatesearchview

        editsearch = v.findViewById(R.id.searchview);

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

            @Override
            public boolean onQueryTextChange(String newText) {
                if(TextUtils.isEmpty(newText)){
                    list.clearTextFilter();
                    adapter.filter("");
                    list.setVisibility(View.INVISIBLE);
                } else {
                    adapter.filter(newText);
                    list.setVisibility(View.VISIBLE);
                }
                return true;
            }
        });

        drawerlayouthome = v.findViewById(R.id.drawer_layouthome);
        drawerlayouthome.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                list.setVisibility(View.INVISIBLE);
                editsearch.clearFocus();
            }
        });





        //definingcardview

        CardView doacard = v.findViewById(R.id.doacard);
        CardView ziarahcard = v.findViewById(R.id.ziarahcard);

        //setcardviewlistener

        doacard.setOnClickListener(this);
        ziarahcard.setOnClickListener(this);






        return v;

    }




    @Override
    public void onClick(View view) {

        Intent i ;

        switch (view.getId()) {

            case R.id.doacard:
                i = new Intent(getActivity(),listdoa.class);
            startActivity(i);
            break;
            case R.id.ziarahcard:
                i = new Intent(getActivity(),listziarah.class);
                startActivity(i);
                break;

        }

    }

}

和我的列表视图适配器


package com.example.testtt;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class ListViewAdapter extends BaseAdapter {

    //Declare variables first

    Context mContext;
    LayoutInflater inflater;
    private List<DoaSearchIndex> doaSearchIndexList = null;
    private ArrayList<DoaSearchIndex> arrayList;

    public ListViewAdapter(Context context,List<DoaSearchIndex> doaSearchIndexList) {
        mContext = context;
        this.doaSearchIndexList = doaSearchIndexList;
        inflater = LayoutInflater.from(mContext);
        this.arrayList = new ArrayList<DoaSearchIndex>();
        this.arrayList.addAll(doaSearchIndexList);
    }
    public class ViewHolder {
        TextView name;
    }

    @Override
    public int getCount() {
        return doaSearchIndexList.size();
    }

    @Override
    public DoaSearchIndex getItem(int position) {
        return doaSearchIndexList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position,ViewGroup parent) {
        final ViewHolder holder;
        if (view == null) {
            holder = new ViewHolder();
            view = inflater.inflate(R.layout.listview_item,null);
            // Locate the TextViews in listview_item.xml
            holder.name = (TextView) view.findViewById(R.id.name);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }
        // Set the results into TextViews
        holder.name.setText(doaSearchIndexList.get(position).getDoaSearchIndex());
        return view;
    }

    // Filter Class
    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        doaSearchIndexList.clear();
        if (charText.length() == 0) {
            doaSearchIndexList.addAll(arrayList);
        } else {
            for (DoaSearchIndex wp : arrayList) {
                if (wp.getDoaSearchIndex().toLowerCase(Locale.getDefault()).contains(charText)) {
                    doaSearchIndexList.add(wp);
                }
            }
        }
        notifyDataSetChanged();
    }

}

和我的 doasearchindex 类

package com.example.testtt;

public class DoaSearchIndex {

    private String doaSearchIndex;

    public DoaSearchIndex(String doaSearchIndex) {
        this.doaSearchIndex = doaSearchIndex;
    }

    public String getDoaSearchIndex() {
        return this.doaSearchIndex;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com(将#修改为@)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?