android – 如何在自定义列表视图中搜索

android – 如何在自定义列表视图中搜索,第1张

概述嗨我有一个自定义列表视图,但我无法编码正确的方式只过滤/搜索CustomListView中的特定人名(基本上我从 JSON得到这个并存储在ArrayList中)…请任何人帮我这个方法在CustomListViewAdapter.java中过滤 这是我的Main_Activity.Java代码 array111.add(new AshTable(test1, test2, test3, test4, 嗨我有一个自定义列表视图,但我无法编码正确的方式只过滤/搜索CustomListVIEw中的特定人名(基本上我从 JSON得到这个并存储在ArrayList中)…请任何人帮我这个方法在CustomListVIEwAdapter.java中过滤

这是我的Main_Activity.Java代码

array111.add(new Ashtable(test1,test2,test3,test4,test5,test6,test7,test8,test9,test10,test11,test12,test13,test14,test15,test16,test17,test18,test19,test20,test21,test22,test23,test24,test25,test26,test27,test28,test29,test30,test31,test32,test33,test34,test35,test36,test37,test38,test39,test40,test41,test42));            }        } catch (JsONException e) {            e.printstacktrace();        }        final CustomListVIEwAdapter adapter = new CustomListVIEwAdapter(getActivity(),R.layout.home_List_vIEw,array111);        lstv11.setAdapter(adapter);        inputSearch.addTextChangedListener(new TextWatcher() {            @OverrIDe            public voID afterTextChanged(Editable arg0) {                // Todo auto-generated method stub                String text = inputSearch.getText().toString().tolowerCase(Locale.getDefault());                adapter.filter(text);            }            @OverrIDe            public voID beforeTextChanged(CharSequence arg0,int arg1,int arg2,int arg3) {                // Todo auto-generated method stub            }            @OverrIDe            public voID onTextChanged(CharSequence arg0,int arg3) {                // Todo auto-generated method stub            }        });        mSwipeRefreshLayout.setRefreshing(false);    }}

这是我的CustomListVIEwAdapter.java代码

公共类CustomListVIEwAdapter extends ArrayAdapter实现Filterable {

ArrayList<Ashtable> prod;Context context;int resource;public CustomListVIEwAdapter(Context context,int resource,ArrayList<Ashtable> prod) {    super(context,resource,prod);    this.context=context;    this.resource=resource;    this.prod=prod;}@OverrIDepublic VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent){    if(convertVIEw==null){        LayoutInflater layoutInflater=(LayoutInflater)getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);        convertVIEw=layoutInflater.inflate(R.layout.List_vIEw,null,true);    }    Ashtable pro=getItem(position);    final   String  st1=pro.getCompname();    final   String  st2=pro.getPersonname();    final   String  st3=pro.getAddress();    final   String  st4=pro.getMailID();    final   String  st5=pro.getMob1();    final   String  st6=pro.getMob2();    final   String  st7=pro.getShowname();    final   String  st8=pro.getdispatchdate();    final   String  st9=pro.getdispatchtime();    final   String  st10=pro.getStatedate();    final   String  st11=pro.getStarttime();    final   String  st12=pro.getSetupdate();    final   String  st13=pro.getSetuptime();    final   String  st14=pro.getEnddate();    final   String  st15=pro.getEndtime();    final   String  st16=pro.getdismanteldate();    final   String  st17=pro.getdismanteltime();    final   String  st18=pro.getVenu();    final   String  st19=pro.getVenuaddress();    final   String  st20=pro.getBoardsize();    final   String  st21=pro.getoverallsqft();    final   String  st22=pro.getRatepersqft();    final   String  st23=pro.getTotalamt();    final   String  st24=pro.getTransport();    final   String  st25=pro.getStage();    final   String  st26=pro.getPower();    final   String  st27=pro.getothercost1();    final   String  st28=pro.getothercost2();    final   String  st29=pro.getGrossamt();    final   String  st30=pro.getBillrequired();    final   String  st31=pro.getBillinnameof();    final   String  st32=pro.getServicetax();    final   String  st33=pro.getTotalamt2();    final   String  st34=pro.getAdvanceamt();    final   String  st35=pro.getCreditperiod();    final   String  st36=pro.getPhotoname();    final   String  st37=pro.getPhotomob();    final   String  st38=pro.getPhotoemail();    final   String  st39=pro.getMarketingname();    final   String  st40=pro.getRemark();    TextVIEw txt1=(TextVIEw)convertVIEw.findVIEwByID(R.ID.textVIEw11);    txt1.setText(pro.getPersonname());    TextVIEw txt2=(TextVIEw)convertVIEw.findVIEwByID(R.ID.textVIEw22);    txt2.setText(pro.getMob1());    TextVIEw txt3=(TextVIEw)convertVIEw.findVIEwByID(R.ID.textVIEw33);    txt3.setText(pro.getShowname());    TextVIEw txt5=(TextVIEw)convertVIEw.findVIEwByID(R.ID.textVIEw44);    txt5.setText(pro.getStatedate());    TextVIEw txt4=(TextVIEw)convertVIEw.findVIEwByID(R.ID.textVIEw6);    txt4.setText(pro.getEnddate());    TextVIEw txt6=(TextVIEw)convertVIEw.findVIEwByID(R.ID.textVIEw55);    txt6.setText(pro.getBoardsize());    TextVIEw txt7=(TextVIEw)convertVIEw.findVIEwByID(R.ID.teextVIEw);    txt7.setText("( "+pro.getCompname()+" )");    button imgb=(button) convertVIEw.findVIEwByID(R.ID.imagebutton2);    imgb.setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            Intent intent = new Intent().setClass(getContext(),Full_info_page.class);            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MulTIPLE_TASK);            intent.putExtra("name1",String.valueOf(st1));            intent.putExtra("name2",String.valueOf(st2));            intent.putExtra("name3",String.valueOf(st3));            intent.putExtra("name4",String.valueOf(st4));            intent.putExtra("name5",String.valueOf(st5));            intent.putExtra("name6",String.valueOf(st6));            intent.putExtra("name7",String.valueOf(st7));            intent.putExtra("name8",String.valueOf(st8));            intent.putExtra("name9",String.valueOf(st9));            intent.putExtra("name10",String.valueOf(st10));            intent.putExtra("name11",String.valueOf(st11));            intent.putExtra("name12",String.valueOf(st12));            intent.putExtra("name13",String.valueOf(st13));            intent.putExtra("name14",String.valueOf(st14));            intent.putExtra("name15",String.valueOf(st15));            intent.putExtra("name16",String.valueOf(st16));            intent.putExtra("name17",String.valueOf(st17));            intent.putExtra("name18",String.valueOf(st18));            intent.putExtra("name19",String.valueOf(st19));            intent.putExtra("name20",String.valueOf(st20));            intent.putExtra("name21",String.valueOf(st21));            intent.putExtra("name22",String.valueOf(st22));            intent.putExtra("name23",String.valueOf(st23));            intent.putExtra("name24",String.valueOf(st24));            intent.putExtra("name25",String.valueOf(st25));            intent.putExtra("name26",String.valueOf(st26));            intent.putExtra("name27",String.valueOf(st27));            intent.putExtra("name28",String.valueOf(st28));            intent.putExtra("name29",String.valueOf(st29));            intent.putExtra("name30",String.valueOf(st30));            intent.putExtra("name31",String.valueOf(st31));            intent.putExtra("name32",String.valueOf(st32));            intent.putExtra("name33",String.valueOf(st33));            intent.putExtra("name34",String.valueOf(st34));            intent.putExtra("name35",String.valueOf(st35));            intent.putExtra("name36",String.valueOf(st36));            intent.putExtra("name37",String.valueOf(st37));            intent.putExtra("name38",String.valueOf(st38));            intent.putExtra("name39",String.valueOf(st39));            intent.putExtra("name40",String.valueOf(st40));            context.startActivity(intent);        }    });    return convertVIEw;}public voID filter(String charText) {    charText = charText.tolowerCase(Locale.getDefault());    if (charText.length() == 0) {    } else {    }    notifyDataSetChanged();}

}

请帮助我使用此方法过滤器仅过滤人名或日期….提前谢谢

解决方法 根据此示例代码更改adapeter类,并专注于getFilter方法,尽管我已粘贴完整的适配器类供您参考.

public class Customlistadapter extends BaseAdapter{    private Activity activity;    private LayoutInflater inflater;    private List<MovIE> movIEItems;    private List<MovIE> movIEItemSearched = null;    private List<MovIE> originalMovIEList;    ImageLoader imageLoader = AppController.getInstance().getimageLoader();    public Customlistadapter(Activity activity,List<MovIE> movIEItems) {        this.activity = activity;        this.movIEItems = movIEItems;        this.originalMovIEList = new ArrayList<MovIE>(movIEItems);        this.movIEItemSearched = new ArrayList<MovIE>();        this.movIEItemSearched.addAll(movIEItems);    }    //Add Below Method    public voID reloadData(){        this.originalMovIEList = new ArrayList<MovIE>(movIEItems);        notifyDataSetChanged();    }    @OverrIDe    public int getCount() {        return movIEItems.size();    }    @OverrIDe    public Object getItem(int location) {        return movIEItems.get(location);    }    @OverrIDe    public long getItemID(int position) {        return position;    }    @OverrIDe    public VIEw getVIEw(int position,VIEwGroup parent) {        if (inflater == null)            inflater = (LayoutInflater) activity                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);        if (convertVIEw == null)            convertVIEw = inflater.inflate(R.layout.List_row,null);        if (imageLoader == null)            imageLoader = AppController.getInstance().getimageLoader();        NetworkImageVIEw thumbnail = (NetworkImageVIEw) convertVIEw                .findVIEwByID(R.ID.thumbnail);        TextVIEw Title = (TextVIEw) convertVIEw.findVIEwByID(R.ID.Title);        TextVIEw rating = (TextVIEw) convertVIEw.findVIEwByID(R.ID.rating);        TextVIEw genre = (TextVIEw) convertVIEw.findVIEwByID(R.ID.genre);        TextVIEw year = (TextVIEw) convertVIEw.findVIEwByID(R.ID.releaseYear);        TextVIEw appuser = (TextVIEw) convertVIEw.findVIEwByID(R.ID.appuser);        TextVIEw reg = (TextVIEw) convertVIEw.findVIEwByID(R.ID.reg);//      linearLayout.LayoutParams layoutParams = new linearLayout.LayoutParams(100,100);//      iv.setLayoutParams(layoutParams);        // getting movIE data for the row        MovIE m = movIEItems.get(position);        // thumbnail image        thumbnail.setimageUrl(m.getthumbnailUrl(),imageLoader);        // Title        Title.setText(m.getTitle());        // rating        rating.setText(m.getrating());        // genre        genre.setText(m.getGenre());        appuser.setText(m.getApp_user());        reg.setText(m.getReg());        year.setText(String.valueOf(m.getYear()));        return convertVIEw;    }    public Filter getFilter(Componentname cn) {        return new Filter() {            @OverrIDe            protected FilterResults performFiltering(CharSequence constraint) {                String filterString = constraint.toString().tolowerCase();                FilterResults results = new FilterResults();                final List<MovIE> List = originalMovIEList;                int count = List.size();                final ArrayList<MovIE> nList = new ArrayList<MovIE>(count);                String filterableString1,filterableString2;                        /*                        for (int i = 0; i < count; i++) {                            filterableString = List.get(i).getTitle();                            if (filterableString.tolowerCase().contains(filterString)) {                               // nList.add(filterableString);                                nList.add(List.get(i));                            }                        }                        */                for (MovIE movIE: originalMovIEList) {                    filterableString1 = movIE.getTitle();                    filterableString2 = movIE.getrating();                    if (filterableString1.tolowerCase().contains(filterString)||filterableString2.tolowerCase().contains(filterString)) {                        // nList.add(filterableString);                        nList.add(movIE);                    }                }                results.values = nList;                results.count = nList.size();                return results;            }            @SuppressWarnings("unchecked")            @OverrIDe            protected voID publishResults(CharSequence constraint,FilterResults results) {                movIEItems.clear();                movIEItems.addAll((ArrayList<MovIE>) results.values);                notifyDataSetChanged();            }        };    }}

并在搜索视图中使用此方法:

@OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater inflater = getMenuInflater();        // Inflate menu to add items to action bar if it is present.        inflater.inflate(R.menu.main,menu);        SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);        SearchVIEw search = (SearchVIEw) menu.findItem(R.ID.action_search).getActionVIEw();        search.setSearchableInfo(manager.getSearchableInfo(getComponentname()));        search.setonqueryTextListener(new SearchVIEw.OnqueryTextListener() {            @OverrIDe            public boolean onqueryTextsubmit(String query) {                return true;            }            @OverrIDe            public boolean onqueryTextChange(String newText) {                adapter.getFilter(getComponentname()).filter(newText);                adapter.notifyDataSetChanged();                return false;            }        });        return true;    }
总结

以上是内存溢出为你收集整理的android – 如何在自定义列表视图中搜索全部内容,希望文章能够帮你解决android – 如何在自定义列表视图中搜索所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1123965.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存