0

ListViewウェブサービスからのデータでデータを検索しようとしています..

説明:検索に[abc]editview[searchText]と入力して をクリックserachbutton(buttonSearch)すると、関連するすべてのデータがlistview(listView)

例: abc、abacd、abcderg などをこのように...

このトピックは私にとって新しいものです。

これが私のコードです。私がそれをするのを手伝ってください。

試してみましたが、これを行う方法を理解できませんでした。

worklistview.java

    ArrayList<Patient> patientListArray;


 listView = (ListView) findViewById(R.id.workListview);
    objectAdapter = new WorkListAdapter(this, patientListArray);
    listView.setAdapter(objectAdapter);     
    listView.setTextFilterEnabled(true);

    searchText = (EditText) findViewById(R.id.searchView);
    searchText.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
        public void onTextChanged(CharSequence s, int start, int before, int count) {
             dataAdapter.getFilter().filter(s.toString());


        }
    }); 

WorkListAdapter.java

public Filter getFilter() {

    Filter myFilter = new Filter() {



        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {

            if (!patientListArray.isEmpty()){
                clear();
            }

            for (int i = 0; i < patientListArray.size(); i++) {
                if(patientListArray.get(i).getName().toLowerCase().startsWith(constraint.toString().toLowerCase())){
                    add(patientListArray.get(i));
                }
            }

            notifyDataSetChanged();
        }

        private void add(Patient patient) {


        }

        private void clear() {


        }

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {

            return null;
        }
    };  

    return myFilter;
}
4

1 に答える 1

0

グラフィカルに、EditText (TextWatcher) とリストビューを含むレイアウトが必要です。次に、リストビューのアダプターは、フィルター ( dataAdapter.getFilter().filter(s.toString()); ) を使用して TextWatcher の変更を常にリッスンします。

詳細はこちら

幸運を。

于 2012-10-18T08:32:15.980 に答える