Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.74 KB | None | 0 0
  1. //linea 164 y su complemento
  2. for (Plaza model : models) {
  3. final String text = model.getCodigoPlaza().toLowerCase();
  4. if (text.contains(query)) {
  5. filPlazaList.add(model);
  6. }
  7. }
  8.  
  9. //linea 150 y su complemento
  10. final List<Plaza> filteredModelList = filter(plazas, newText);
  11. adapter.setFilter(filteredModelList);
  12.  
  13. public class MainActivity extends AppCompatActivity {
  14.  
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19.  
  20. // Creación del fragmento principal
  21. if (savedInstanceState == null) {
  22. getSupportFragmentManager().beginTransaction()
  23. .add(R.id.container, new MainFragment(), "MainFragment")
  24. .commit();
  25. }
  26. }
  27.  
  28.  
  29. @Override
  30. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  31. if (requestCode == Constantes.CODIGO_DETALLE || requestCode == 3) {
  32. if (resultCode == RESULT_OK || resultCode == 203) {
  33. MainFragment fragment = (MainFragment) getSupportFragmentManager().
  34. findFragmentByTag("MainFragment");
  35. fragment.cargarAdaptador();
  36. }
  37. }
  38. }
  39. }
  40.  
  41. @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  42. public class MainFragment extends Fragment implements SearchView.OnQueryTextListener {
  43.  
  44. /*
  45. Etiqueta de depuracion
  46. */
  47. private static final String TAG = MainFragment.class.getSimpleName();
  48.  
  49. /*
  50. Adaptador del recycler view
  51. */
  52. private MetaAdapter adapter;
  53.  
  54. /*
  55. Instancia global del recycler view
  56. */
  57. private RecyclerView lista;
  58.  
  59. /*
  60. instancia global del administrador
  61. */
  62. private RecyclerView.LayoutManager lManager;
  63.  
  64. /*
  65. Instancia global del FAB
  66. */
  67.  
  68. private Gson gson = new Gson();
  69.  
  70. /*
  71. Instancia global para el refresh
  72. */
  73. SwipeRefreshLayout mSwipeRefreshLayout;
  74.  
  75. private List<Plaza> plazas;
  76.  
  77.  
  78.  
  79. public MainFragment() {
  80. }
  81.  
  82. @Override
  83. public void onCreate(Bundle savedInstanceState) {
  84. super.onCreate(savedInstanceState);
  85. // Habilitar al fragmento para contribuir en la action bar
  86. setHasOptionsMenu(true);
  87. }
  88.  
  89. @Override
  90. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  91. Bundle savedInstanceState) {
  92.  
  93. View v = inflater.inflate(R.layout.fragment_main, container, false);
  94.  
  95.  
  96. lista = (RecyclerView) v.findViewById(R.id.reciclador);
  97. lista.setHasFixedSize(true);
  98. // Usar un administrador para LinearLayout
  99. lManager = new LinearLayoutManager(getActivity());
  100. lista.setLayoutManager(lManager);
  101.  
  102. mSwipeRefreshLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_refresh_layout_main);
  103. mSwipeRefreshLayout.setDistanceToTriggerSync(80);// in dips
  104. mSwipeRefreshLayout.setSize(SwipeRefreshLayout.DEFAULT);
  105. mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
  106. @Override
  107. public void onRefresh() {
  108. cargarAdaptador();
  109. mSwipeRefreshLayout.setRefreshing(false);
  110. }
  111. });
  112.  
  113. // Cargar datos en el adaptador
  114. cargarAdaptador();
  115.  
  116. return v;
  117. }
  118.  
  119.  
  120.  
  121. @Override
  122. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  123. inflater.inflate(R.menu.menu_form, menu);
  124.  
  125. final MenuItem item = menu.findItem(R.id.action_search);
  126. final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
  127. searchView.setQueryHint(getText(R.string.search));
  128. searchView.setOnQueryTextListener(this);
  129. //
  130. MenuItemCompat.setOnActionExpandListener(item,
  131. new MenuItemCompat.OnActionExpandListener() {
  132. @Override
  133. public boolean onMenuItemActionCollapse(MenuItem item){
  134. adapter.setFilter(plazas);
  135. return true;
  136. }
  137. @Override
  138. public boolean onMenuItemActionExpand(MenuItem item) {
  139. // Do something when expanded
  140. return true; // Return true to expand action view
  141. }
  142. });
  143. }
  144.  
  145. @Override
  146. public boolean onQueryTextChange(String newText) {
  147. final List<Plaza> filteredModelList = filter(plazas, newText);
  148. adapter.setFilter(filteredModelList);
  149. return true;
  150. }
  151.  
  152. @Override
  153. public boolean onQueryTextSubmit(String query) {
  154. return false;
  155. }
  156.  
  157. private List<Plaza> filter(List<Plaza> models, String query) {
  158. query = query.toLowerCase();
  159. //
  160. final List<Plaza> filteredModelList = new ArrayList<>();
  161. for (Plaza model : models) {
  162. final String text = model.getCodigoPlaza().toLowerCase();
  163. if (text.contains(query)) {
  164. filteredModelList.add(model);
  165. }
  166. }
  167. return filteredModelList;
  168.  
  169. }
  170.  
  171.  
  172.  
  173.  
  174.  
  175. /**
  176. * Carga el adaptador con las metas obtenidas
  177. * en la respuesta
  178. */
  179. public void cargarAdaptador() {
  180. // Petición GET
  181. VolleySingleton.
  182. getInstance(getActivity()).
  183. addToRequestQueue(
  184. new JsonObjectRequest(
  185. Request.Method.GET,
  186. Constantes.GET,
  187. null,
  188. new Response.Listener<JSONObject>() {
  189.  
  190. @Override
  191. public void onResponse(JSONObject response) {
  192. // Procesar la respuesta Json
  193. procesarRespuesta(response);
  194. }
  195. },
  196. new Response.ErrorListener() {
  197. @Override
  198. public void onErrorResponse(VolleyError error) {
  199. Log.d(TAG, "Error Volley: " + error.toString());
  200. }
  201. }
  202.  
  203. )
  204. );
  205. }
  206.  
  207. /**
  208. * Interpreta los resultados de la respuesta y así
  209. * realizar las operaciones correspondientes
  210. *
  211. * @param response Objeto Json con la respuesta
  212. */
  213. private void procesarRespuesta(JSONObject response) {
  214. try {
  215. // Obtener atributo "estado"
  216. String estado = response.getString("estado");
  217.  
  218. switch (estado) {
  219. case "1": // EXITO
  220. // Obtener array "metas" Json
  221. JSONArray mensaje = response.getJSONArray("metas");
  222. // Parsear con Gson
  223. Plaza[] plazas = gson.fromJson(mensaje.toString(), Plaza[].class);
  224. // Inicializar adaptador
  225. adapter = new MetaAdapter(Arrays.asList(plazas), getActivity());
  226. // Setear adaptador a la lista
  227. lista.setAdapter(adapter);
  228. break;
  229. case "2": // FALLIDO
  230. String mensaje2 = response.getString("mensaje");
  231. Toast.makeText(
  232. getActivity(),
  233. mensaje2,
  234. Toast.LENGTH_LONG).show();
  235. break;
  236. }
  237.  
  238. } catch (JSONException e) {
  239. Log.d(TAG, e.getMessage());
  240. }
  241.  
  242. }
  243.  
  244. }
  245.  
  246. public class extends RecyclerView.Adapter<MetaAdapter.MetaViewHolder>
  247. implements ItemClickListener {
  248.  
  249. /**
  250. * Lista de objetos {@link Meta} que representan la fuente de datos
  251. * de inflado
  252. */
  253. private List<Plaza> items;
  254.  
  255. /*
  256. Contexto donde actua el recycler view
  257. */
  258. private Context context;
  259.  
  260.  
  261. public MetaAdapter(List<Plaza> items, Context context) {
  262. this.context = context;
  263. this.items = items;
  264. }
  265.  
  266. @Override
  267. public int getItemCount() {
  268. return items.size();
  269. }
  270.  
  271. @Override
  272. public MetaViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
  273. View v = LayoutInflater.from(viewGroup.getContext())
  274. .inflate(R.layout.item_list, viewGroup, false);
  275. return new MetaViewHolder(v, this);
  276. }
  277.  
  278. @Override
  279. public void onBindViewHolder(MetaViewHolder viewHolder, int i) {
  280. switch(items.get(i).getEstado())
  281. {
  282. case "0":
  283. viewHolder.estado.setText("OCUPADO");
  284. break;
  285. case "1":
  286. viewHolder.estado.setText("VACANTE");
  287. break;
  288. case "2":
  289. viewHolder.estado.setText("RESERVADO");
  290. break;
  291. default:
  292. viewHolder.estado.setText("ERROR");
  293. }
  294. viewHolder.nivel.setText(items.get(i).getNivel());
  295. //viewHolder.estado.setText(items.get(i).getEstado());
  296. viewHolder.colegio.setText(items.get(i).getIe());
  297. viewHolder.especialidad.setText(items.get(i).getEspecialidad());
  298. viewHolder.codigo.setText(items.get(i).getCodigoPlaza());
  299. }
  300.  
  301.  
  302. /**
  303. * Sobrescritura del método de la interfaz {@link ItemClickListener}
  304. *
  305. * @param view item actual
  306. * @param position posición del item actual
  307. */
  308. @Override
  309. public void onItemClick(View view, int position) {
  310. DetailActivity.launch(
  311. (Activity) context, items.get(position).getPlazaID());
  312. }
  313.  
  314.  
  315. public static class MetaViewHolder extends RecyclerView.ViewHolder
  316. implements View.OnClickListener {
  317. // Campos respectivos de un item
  318. public TextView nivel;
  319. public TextView estado;
  320. public TextView colegio;
  321. public TextView especialidad;
  322. public TextView codigo;
  323. public ItemClickListener listener;
  324.  
  325.  
  326. public MetaViewHolder(View v, ItemClickListener listener) {
  327. super(v);
  328. nivel = (TextView) v.findViewById(R.id.nivel);
  329. estado = (TextView) v.findViewById(R.id.estado);
  330. colegio = (TextView) v.findViewById(R.id.colegio);
  331. especialidad = (TextView) v.findViewById(R.id.especialidad);
  332. codigo = (TextView) v.findViewById(R.id.codigo);
  333. this.listener = listener;
  334. v.setOnClickListener(this);
  335. }
  336.  
  337. @Override
  338. public void onClick(View v) {
  339. listener.onItemClick(v, getAdapterPosition());
  340. }
  341. }
  342.  
  343. public void setFilter(List<Plaza> plazas){
  344. items = new ArrayList<>();
  345. items.addAll(plazas);
  346. notifyDataSetChanged();
  347. }
  348. }
  349.  
  350.  
  351. interface ItemClickListener {
  352. void onItemClick(View view, int position);
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement