カスタムアダプタを使用したリストビュー検索で検索結果が正しく表示されない

waqasbhalli345

リストビューでの検索が正しく機能していません。配列リストにある文字列を入力すると、すべてのレコードが表示されますが、編集テキストフィールドに他の文字列を入力すると、空のリストが表示されます。

public class GetCustomList extends ListActivity {

TweetListAdaptor myAdaptor;
ListView lv;
EditText searchTxt;
public ArrayList<Contact> tweets = new ArrayList<Contact>();


DatabaseHandler db = new DatabaseHandler(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.customer_info);
    tweets = db.getAllContacts();


     lv = (ListView) findViewById(android.R.id.list);
     lv.setTextFilterEnabled(true);


     searchTxt = (EditText) findViewById(R.id.editTextSearchNameField);  
     searchTxt.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            myAdaptor.getFilter().filter(s.toString());

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

    Button btnSearch = (Button) findViewById(R.id.buttonSearch);
    btnSearch.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            onPostExecute(null);

        }
    });


    /**
     * CRUD Operations
     * */
    // Inserting Contacts

    Log.d("Insert: ", "Inserting .."); 
     db.addContact(new Contact("786","zahid", "bilaltown", '0'));
     db.addContact(new Contact("123","Shahid", "bilaltown", '0'));
     db.addContact(new Contact("123","waqas", "bilaltown", '0'));

    // Reading all contacts
    Log.d("Reading: ", "Reading all contacts.."); 

    for (Contact cn : tweets) {
        String log = "Id: "+cn.get_id()+ ",Code:"+ cn.get_code() +" ,Name: " + cn.get_name() + " ,Address: " + cn.get_address() + " ,Phone: " + cn.get_limit();
            // Writing Contacts to log
    Log.d("Name: ", log);
}


}

    protected void onPostExecute(Void result) {

        myAdaptor = new TweetListAdaptor(GetCustomList.this, tweets);
        myAdaptor.notifyDataSetChanged();
        setListAdapter(myAdaptor);

    }


    public class TweetListAdaptor extends ArrayAdapter<Contact> implements Filterable {

        private ArrayList<Contact> mOriginalValues = new ArrayList<Contact>(); // Original Values
        private ArrayList<Contact> mDisplayedValues = new ArrayList<Contact>();    // Values to be displayed
        LayoutInflater inflater;
        Context context;

        public TweetListAdaptor(Context context,ArrayList<Contact> items) {
                  super(context, R.layout.custom_list_info, items);
                  this.mOriginalValues = items;
                  this.mDisplayedValues = items;
                  this.context = context;
                 // inflater = LayoutInflater.from(context);

        }

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


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


       public class ViewHolder {
            private TextView CustomerId;
            private TextView CustomerShop;
            private TextView date;
            private TextView phoneNumber;

            public ViewHolder(View v) {
                 this.CustomerId = (TextView) v.findViewById(R.id.textViewCustomerID);
                 this.CustomerShop = (TextView) v.findViewById(R.id.textViewShopName);

                // this.date = (TextView) v.findViewById(R.id.date);
                // this.status = (TextView) v.findViewById(R.id.staus);
            }
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
                View v = convertView;
                if (v == null) {
                        LayoutInflater vi = (LayoutInflater)
                                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        v = vi.inflate(R.layout.custom_list_info, null);
                        holder = new ViewHolder(v);
                        v.setTag(holder);
                }else {
                    holder = (ViewHolder) v.getTag();
                    }

                final Contact o = getItem(position);
                if (o != null) {

                    holder.CustomerId.setText(""+o._id);
                    holder.CustomerShop.setText(o._name);

                    //holder.date.setText(o.date);
                    //holder.status.setText(o.status_txt);
                    /*if(o.status.equals("1")){
                         RelativeLayout llr = (RelativeLayout) v.findViewById(R.id.testRes);
                         llr.setBackgroundResource(R.drawable.decline);
                    }else if(o.status.equals("2")){
                         RelativeLayout llr = (RelativeLayout) v.findViewById(R.id.testRes);
                         llr.setBackgroundResource(R.drawable.acceptence);
                        }
                }*/

                ImageButton btnSearchCustomer = (ImageButton) v.findViewById(R.id.btnSearchCustomer);
                btnSearchCustomer.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        Intent intent = new Intent(GetCustomList.this, CustomerDetailedInfo.class);
                        intent.putExtra("ccode", o._code);
                        intent.putExtra("cname", o._name);
                        intent.putExtra("caddress", o._address);
                        intent.putExtra("climit", o._limit);
                        startActivity(intent);
                    }
                });     
           }
                return v;      
        }

      ///////////////////////////////

      @Override
    public Filter getFilter() {
        Filter filter = new Filter() {

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

                mDisplayedValues = (ArrayList<Contact>) results.values; // has the filtered values
                notifyDataSetChanged();  // notifies the data with new filtered values
            }

            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults results = new FilterResults();        // Holds the results of a filtering operation in values
                ArrayList<Contact> FilteredArrList = new ArrayList<Contact>();

                if (mOriginalValues == null) {
                    mOriginalValues = new ArrayList<Contact>(mDisplayedValues); // saves the original data in mOriginalValues
                }

                /********
                 * 
                 *  If constraint(CharSequence that is received) is null returns the mOriginalValues(Original) values
                 *  else does the Filtering and returns FilteredArrList(Filtered)  
                 *
                 ********/
              if (constraint == null || constraint.length() == 0) {

                    // set the Original result to return  
                    results.count = mOriginalValues.size();
                    results.values = mOriginalValues;
                } else {
                    constraint = constraint.toString().toLowerCase();
                    for (int i = 0; i < mOriginalValues.size(); i++) {
                        String data = mOriginalValues.get(i)._name;
                        if (data.toLowerCase().startsWith(constraint.toString())) {
                            FilteredArrList.add(new Contact(mOriginalValues.get(i)._name,mOriginalValues.get(i)._code,mOriginalValues.get(i)._address,mOriginalValues.get(i)._limit));
                        }
                    }
                    // set the Filtered result to return
                    results.count = FilteredArrList.size();
                    results.values = FilteredArrList;
                }
                return results;
            }
        };
        return filter;
    } 

      ///////////////////

    }

お問い合わせクラス

public class Contact {

//private variables
int _id;
String _code;
String _name;
String _address;
int _limit;

// Empty constructor
public Contact(){

}
// constructor
public Contact(int id, String _code,String name,String address, int _limit){
    this._id = id;
    this._code = _code;
    this._name = name;
    this._address = address;
    this._limit = _limit;

}

// constructor
public Contact(String _code,String name, String address,int _limit){
    this._code = _code;
    this._name = name;
    this._address = address;
    this._limit = _limit;
}
public int get_id() {
    return _id;
}
public void set_id(int _id) {
    this._id = _id;
}
public String get_code() {
    return _code;
}
public void set_code(String _code) {
    this._code = _code;
}
public String get_name() {
    return _name;
}
public void set_name(String _name) {
    this._name = _name;
}
public String get_address() {
    return _address;
}
public void set_address(String _address) {
    this._address = _address;
}
public int get_limit() {
    return _limit;
}
public void set_limit(int _limit) {
    this._limit = _limit;
}

}

マイクM。

コードにはいくつかの小さな間違いがあります。まず、次のgetItem()メソッドをオーバーライドする必要がありますTweetListAdaptor

@Override
public Contact getItem(int position)
{
    return mDisplayedValues.get(position);
}

次に、FilterperformFiltering()メソッドで、次の行のコンストラクターのパラメーターcodenameパラメーターが切り替えられますContact

FilteredArrList.add(new Contact(mOriginalValues.get(i)._code, mOriginalValues.get(i)._name, mOriginalValues.get(i)._address, mOriginalValues.get(i)._limit));

私は20の名前でテストを実行しましたが、これらの修正によって問題が解決すると思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

カスタムアダプタリストビューで検索されたテキストを強調表示する

分類Dev

カスタムリストビューで検索が機能しない

分類Dev

SQLiteDBからのデータとseachviewウィンドウを含む3列のリストビューがあります。カスタムデータを作成しました。検索が正しく実行されない

分類Dev

カスタムアダプタを使用してリストビューが表示されない-android

分類Dev

必要なバージョンをバンプした後、iOSアプリがアプリストアの検索結果に表示されない

分類Dev

検索ビューを使用したカスタムリストアイテムのフィルタリング

分類Dev

カスタム マップ マーカーを検索し、結果をリストに表示します Android

分類Dev

SimpleAdapterを使用してカスタムリストビューで検索

分類Dev

リストビューアダプタを介してImageviewが正しく表示されない

分類Dev

Androidでリストビューアイテムがクリックされたときにリストビューをフィルタリングしても正しい結果が表示されない

分類Dev

utf-8でエンコードされていない特殊文字を使用したカスタム検索用のOSXAutomatorシェルスクリプト

分類Dev

onClick でリストビューを検索すると間違った結果が表示される

分類Dev

カスタム区切り文字を使用したオートコンプリート検索ビュー

分類Dev

カスタムビューが正しく表示されない

分類Dev

ツールバーの検索ボタンをクリックした後、ビューが正しく表示されない

分類Dev

カスタムアダプタを使用したリストビュー内のテキストビューが更新されない

分類Dev

カスタムアダプタを使用してリストビューからアイテムを検索する

分類Dev

WordPressのカスタム投稿タイプが検索結果に表示されない

分類Dev

リストビューに表示されるアクティビティ検索結果を検索するようにonitemclicklistenerを設定します

分類Dev

Espresso-カスタム検索ビューが捕捉されなかったNoMatchingViewException-IdlingResourceなし

分類Dev

containsを使用した全文検索では、同じデータベースコンテンツで異なる結果が表示されます

分類Dev

Windows 10:スタートメニューで検索した後、アプリをクリックできない

分類Dev

ListFragmentのアイテムは、カスタム配列アダプターを使用してリストビューに表示されませんでした

分類Dev

bash正規表現:アスタリスクはgrepであいまいな検索結果を示します

分類Dev

カスタム アダプターがリストビューにテキストを表示しない

分類Dev

初めて検索したときにカスタムオートコンプリートコンポーネントが出力を表示しない

分類Dev

リストビューの検索フィルターは、アイテムのクリック時に間違った結果を返します

分類Dev

onGroupClick と onChildClick で展開可能なリストビューを検索すると、間違った結果が表示される

分類Dev

ブートストラップを使用した検索結果ページのWordpressカスタムレイアウト

Related 関連記事

  1. 1

    カスタムアダプタリストビューで検索されたテキストを強調表示する

  2. 2

    カスタムリストビューで検索が機能しない

  3. 3

    SQLiteDBからのデータとseachviewウィンドウを含む3列のリストビューがあります。カスタムデータを作成しました。検索が正しく実行されない

  4. 4

    カスタムアダプタを使用してリストビューが表示されない-android

  5. 5

    必要なバージョンをバンプした後、iOSアプリがアプリストアの検索結果に表示されない

  6. 6

    検索ビューを使用したカスタムリストアイテムのフィルタリング

  7. 7

    カスタム マップ マーカーを検索し、結果をリストに表示します Android

  8. 8

    SimpleAdapterを使用してカスタムリストビューで検索

  9. 9

    リストビューアダプタを介してImageviewが正しく表示されない

  10. 10

    Androidでリストビューアイテムがクリックされたときにリストビューをフィルタリングしても正しい結果が表示されない

  11. 11

    utf-8でエンコードされていない特殊文字を使用したカスタム検索用のOSXAutomatorシェルスクリプト

  12. 12

    onClick でリストビューを検索すると間違った結果が表示される

  13. 13

    カスタム区切り文字を使用したオートコンプリート検索ビュー

  14. 14

    カスタムビューが正しく表示されない

  15. 15

    ツールバーの検索ボタンをクリックした後、ビューが正しく表示されない

  16. 16

    カスタムアダプタを使用したリストビュー内のテキストビューが更新されない

  17. 17

    カスタムアダプタを使用してリストビューからアイテムを検索する

  18. 18

    WordPressのカスタム投稿タイプが検索結果に表示されない

  19. 19

    リストビューに表示されるアクティビティ検索結果を検索するようにonitemclicklistenerを設定します

  20. 20

    Espresso-カスタム検索ビューが捕捉されなかったNoMatchingViewException-IdlingResourceなし

  21. 21

    containsを使用した全文検索では、同じデータベースコンテンツで異なる結果が表示されます

  22. 22

    Windows 10:スタートメニューで検索した後、アプリをクリックできない

  23. 23

    ListFragmentのアイテムは、カスタム配列アダプターを使用してリストビューに表示されませんでした

  24. 24

    bash正規表現:アスタリスクはgrepであいまいな検索結果を示します

  25. 25

    カスタム アダプターがリストビューにテキストを表示しない

  26. 26

    初めて検索したときにカスタムオートコンプリートコンポーネントが出力を表示しない

  27. 27

    リストビューの検索フィルターは、アイテムのクリック時に間違った結果を返します

  28. 28

    onGroupClick と onChildClick で展開可能なリストビューを検索すると、間違った結果が表示される

  29. 29

    ブートストラップを使用した検索結果ページのWordpressカスタムレイアウト

ホットタグ

アーカイブ