2012-12-24 15 views
8

Tôi có SearchView trong Thanh tác vụ và tôi muốn đề xuất được tìm nạp từ dịch vụ.Đề xuất của chế độ xem tìm kiếm trên Android từ mạng

Tôi đã xem mẫu trong android Samples Searchable Dictionary. nhưng nó đang tải kết quả từ cơ sở dữ liệu cục bộ.

Tôi hiểu điều đó, cần sử dụng Content Provider. nhưng tôi tự hỏi khi nào lấy kết quả từ dịch vụ web. Ý tôi là khi thực hiện cuộc gọi mạng. Xin vui lòng bất cứ ai có thể giúp đỡ.

Trả lời

0

Vì vậy, nếu bạn đang sử dụng một SearchView trong bạn dự án và muốn hiển thị những gợi ý bạn có thể thực hiện có hai phương pháp

/** 
     * Called when the user submits the query. This could be due to a key press on the 
     * keyboard or due to pressing a submit button. 
     * The listener can override the standard behavior by returning true 
     * to indicate that it has handled the submit request. Otherwise return false to 
     * let the SearchView handle the submission by launching any associated intent. 
     * 
     * @param query the query text that is to be submitted 
     * 
     * @return true if the query has been handled by the listener, false to let the 
     * SearchView perform the default action. 
     */ 
     boolean onQueryTextSubmit(String query); 

     /** 
     * Called when the query text is changed by the user. 
     * 
     * @param newText the new content of the query text field. 
     * 
     * @return false if the SearchView should perform the default action of showing any 
     * suggestions if available, true if the action was handled by the listener. 
     */ 
     boolean onQueryTextChange(String newText); 

Như bạn có thể nhìn thấy từ các tài liệu như thế nào những phương pháp làm việc. Vì vậy, miễn là người dùng đang gõ vào phương thứcQueryTextChange sẽ được gọi và mỗi khi từ khóa mới được nhập vào hoặc xóa nó sẽ được gọi.

Trong phương pháp này, bạn có thể gọi cho máy chủ để nhận các đề xuất và đưa ý kiến ​​đó cho người dùng.

Bây giờ, nếu người dùng muốn tìm kiếm ví dụ: "apple", do đó, sẽ không có ý nghĩa khi nhấn máy chủ cho mỗi từ khóa, như máy chủ hit cho "a" rồi "ap" sau "ứng dụng" đó, v.v.,

vì vậy sẽ tốt hơn khi nhấn máy chủ một lần người dùng ngừng nhập trong searchview mà bạn có thể xử lý bằng cách sử dụng handler và runnable một cái gì đó như thế này.

  Handler mHandler; 
     String mQueryText; 


     @Override 
      public boolean onQueryTextChange(final String newText) { 
       mQueryText=newText; 
       //Make if invisible once you get the data. 
       mProgressBar.setVisibility(View.VISIBLE); 
       mHandler.removeCallbacks(mRunnable); 
       mHandler.postDelayed(mRunnable,200); 
       return true; 
       } 

    private Runnable mRunnable =new Runnable() { 
     @Override 
     public void run() { 

     //Hit server here. 

     } 
    }; 

Trong khi bạn có thể nhấn máy chủ và nhận dữ liệu, bạn có thể hiển thị thanh tiến trình hoặc thứ gì đó.

Bạn có thể áp dụng cùng một logic với EditText https://developer.android.com/reference/android/widget/EditText.html. Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan