Dhaval2404

Can not reload ListView Content after implementing Filterabl

Nov 5th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.13 KB | None | 0 0
  1. public class MainActivity extends Activity {
  2.  
  3.     private ListView mList;
  4.     private List<Movie> currentMovieList = new ArrayList<Movie>();
  5.     private List<Movie> originalMovieList = new ArrayList<Movie>();
  6.     EditText inputSearch;
  7.     private CustomListAdapter adapter;
  8.     private ImageView reload_img;
  9.  
  10.  
  11.     protected void onCreate(Bundle savedInstanceState) {
  12.         super.onCreate(savedInstanceState);
  13.         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
  14.         setContentView(R.layout.activity_main);
  15.  
  16.         mList = (ListView) findViewById(R.id.list);
  17.         inputSearch = (EditText) findViewById(R.id.inputSearch);
  18.         reload_img = (ImageView) findViewById(R.id.reload_list);
  19.  
  20.  
  21.         adapter = new CustomListAdapter(this, currentMovieList);
  22.         mList.setAdapter(adapter);
  23.  
  24.         //FETCH Movie-Data FROM SERVER TO LIST
  25.         fetchMovie();
  26.  
  27.         //Reload image click
  28.         reload_img.setOnClickListener(new View.OnClickListener() {
  29.             public void onClick(View arg0) {
  30.  
  31.                 reload_list();
  32.             }
  33.         });
  34.  
  35.         //SEARCH TEXTCHANGE
  36.         inputSearch.addTextChangedListener(new TextWatcher() {
  37.  
  38.             @Override
  39.             public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
  40.                 // When user changed the Text
  41.                 //MainActivity.this.adapter.getFilter().filter(cs.toString());
  42.                 String filterString = cs.toString().toLowerCase();
  43.                 currentMovieList.clear();
  44.                 if (filterString.length == 0) {
  45.                     currentMovieList.addAll(originalMovieList);
  46.                 }
  47.  
  48.                 String filterableString;
  49.                 for (Movie movie : originalMovieList) {
  50.                     if (movie.getTitle().toLowerCase().contains(filterString)) {
  51.                         currentMovieList.add(movie);
  52.                     }
  53.                 }
  54.                 adapter.notifyDataSetChanged();
  55.                 //FLAGS Cannot resolve method 'getFilter()' here
  56.             }
  57.  
  58.             @Override
  59.             public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
  60.                                           int arg3) {
  61.                 // TODO Auto-generated method stub
  62.  
  63.             }
  64.  
  65.             @Override
  66.             public void afterTextChanged(Editable arg0) {
  67.                 // TODO Auto-generated method stub
  68.             }
  69.         });
  70.  
  71.  
  72.     }
  73.  
  74.  
  75.     //RELOAD LISTVIEW METHOD
  76.     private void reload_list() {
  77.  
  78.         pDialog = new ProgressDialog(MainActivity.this);
  79.         // Showing progress dialog before making http request
  80.         pDialog.setMessage("Synchronising....");
  81.         pDialog.show();
  82.         pDialog.setCancelable(false);
  83.         pDialog.setCanceledOnTouchOutside(false);
  84.  
  85.  
  86.         flag_loading = true;
  87.         offSet = 0;
  88.         inputSearch.setText("");
  89.         movieList.clear();
  90.  
  91.         fetchMovie();
  92.         //adapter.notifyDataSetChanged();
  93.  
  94.  
  95.     }
  96.  
  97.  
  98.     //LOAD DATA FROM SERVER TO LISTVIEW USING VOLLEY
  99.     private void fetchMovie() {
  100.  
  101.         // showing refresh animation before making http call
  102.         //swipeRefreshLayout.setRefreshing(true);
  103.  
  104.         // appending offset to url
  105.         String url = Config.URL_TOP_250_URL + offSet;
  106.         //String url = Config.MOVIE_JSON_URL;
  107.         //String url = Config.MOVIE_JSON_URL_SHORT;
  108.  
  109.         // Toast.makeText(MainActivity.this,
  110.         //       "::Json loaded:: ", Toast.LENGTH_SHORT).show();
  111.  
  112.         JsonArrayRequest movieReq = new JsonArrayRequest(url,
  113.                 new Response.Listener<JSONArray>() {
  114.                     @Override
  115.                     public void onResponse(JSONArray response) {
  116.                         // Log.d(TAG, response.toString());
  117.                         hidePDialog();
  118.  
  119.                         if (response.length() > 0) {
  120.  
  121.                             //Toast.makeText(MainActivity.this,
  122.                             //     "Json String : \n"+ response.toString(), Toast.LENGTH_LONG).show();
  123.  
  124.                             // Parsing json
  125.                                    /**/
  126.                             for (int i = 0; i < response.length(); i++) {
  127.                                 try {
  128.  
  129.                                     JSONObject obj = response.getJSONObject(i);
  130.  
  131.                                     int rank = obj.getInt("rank");
  132.  
  133.                                     Movie movie = new Movie();
  134.  
  135.                                     // movie.setRank(obj.getInt("rank"));
  136.  
  137.                                     movie.setTitle(obj.getString("title"));
  138.                                     movie.setThumbnailUrl(obj.getString("image"));
  139.                                     movie.setRating(((Number) obj.get("rating"))
  140.                                             .doubleValue());
  141.  
  142.                                     movie.setYear(obj.getInt("releaseYear"));
  143.  
  144.                                     // Genre is json array
  145.                                     JSONArray genreArry = obj.getJSONArray("genre");
  146.                                     ArrayList<String> genre = new ArrayList<String>();
  147.                                     for (int j = 0; j < genreArry.length(); j++) {
  148.                                         genre.add((String) genreArry.get(j));
  149.                                     }
  150.                                     movie.setGenre(genre);
  151.  
  152.                                     // adding movie to movies array
  153.                                     originalMovieList.add(movie);
  154.  
  155.                                     // updating offset value to highest value
  156.                                     if (rank >= offSet)
  157.                                         offSet = rank;
  158.                                     flag_loading = false;
  159.                                 } catch (JSONException e) {
  160.                                     e.printStackTrace();
  161.  
  162.                                     Toast.makeText(MainActivity.this,
  163.                                             "Network connection error \n " + e.getMessage(), Toast.LENGTH_LONG).show();
  164.                                 }
  165.  
  166.                             }
  167.                                     /**/
  168.  
  169.                             // notifying list adapter about data changes
  170.                             // so that it renders the list view with updated data
  171.                             currentMovieList.clear();
  172.                             currentMovieList.addAll(originalMovieList);
  173.                             adapter.notifyDataSetChanged();
  174.                         } else {
  175.                             Toast.makeText(MainActivity.this,
  176.                                     "End of movie-list", Toast.LENGTH_LONG).show();
  177.  
  178.                         }
  179.  
  180.  
  181.                     }
  182.  
  183.  
  184.                 }, new Response.ErrorListener() {
  185.             @Override
  186.             public void onErrorResponse(VolleyError error) {
  187.                 VolleyLog.d(TAG, "Error :: " + error.getMessage());
  188.                 hidePDialog();
  189.  
  190.  
  191.             }
  192.  
  193.         });
  194.  
  195.         // Adding request to request queue
  196.         MyApplication.getInstance().addToRequestQueue(movieReq);
  197.     }
  198.  
  199.  
  200. }
Advertisement
Add Comment
Please, Sign In to add comment