Android listview item click -


i'm trying listview items have different action when pressed, action depends on variable "state", problem items in same action, here code:

for(int = 0; < json.length(); i++){                     jsonobject c = json.getjsonobject(i);                     // storing  json item in variable                     string  codigo = c.getstring(tag_codigo);                     string  asignatura = c.getstring(tag_nombre);                     int  estado  = c.getint("estado");                     final int maxhoras = c.getint("maxhoras");                     final string idprogramacion = c.getstring("programacionid");                      // adding value hashmap key => value                     hashmap<string, string> map = new hashmap<string, string>();                     map.put(tag_codigo, codigo);                     map.put(tag_nombre, asignatura);                      jsonlist.add(map);                     list=(listview)findviewbyid(r.id.lvclases);                     listadapter adapter = new simpleadapter(bienvenida.this, jsonlist,                             r.layout.listview,                             new string[] { tag_codigo,tag_nombre, }, new int[] {                             r.id.codigo, r.id.nombre,                     });                     list.setadapter(adapter);                     if(estado == 1) {                         log.e("estado", ""+estado);                         list.setonitemclicklistener(new adapterview.onitemclicklistener() {                             @override                             public void onitemclick(adapterview<?> parent, view view,                                                     int position, long id) {                                 intent = new intent(bienvenida.this, registroasistencia.class);                                 i.putextra("programacion",  idprogramacion);                                 i.putextra("maxhoras",  maxhoras);                                 startactivity(i);                                 /*toast toast1 = toast.maketext(getapplicationcontext(), "correcto: el usuario existe", toast.length_short);                                 toast1.show();*/                                 //toast.maketext(bienvenida.this, "you clicked @ " + jsonlist.get(+position).get("asignatura"), toast.length_short).show();                             }                         });                     }else{                         list.setonitemclicklistener(new adapterview.onitemclicklistener() {                              @override                             public void onitemclick(adapterview<?> parent, view view,                                                     int position, long id) {                                 toast.maketext(bienvenida.this, "la clase aún no ha comenzado " + jsonlist.get(+position).get("asignatura"), toast.length_short).show();                             }                         });                     }                 } 

i working on android studio, appreciate help

acually, not answer question. after watching code seems not implementing listview in correct way.

a simple way work listview goes through following abstract steps:

make collection ready -> prepare adapter collection -> set adapter listview

in case, assuming calling web services getting data , web services responding json array.

now, make pojo(plain old java object) class like:

public class mylistitem{     private string codigo;     private string asignatura;     private int estado;     private int maxhoras;     private string idprogramacion;      public mylistitem(string codigo, string asignatura, int estado, int maxhoras, string idprogramacion){         this.codigo = codigo;         this.asignatura = asignatura;         this.estado = estado;         this.maxhoras = maxhoras;         this.idprogramacion = idprogramacion;     }      // can write getter setter methods     public int get_estado(){         return estado;     }      public string get_idprogramacion(){         return idprogramacion;     }      public int get_maxhoras(){         return maxhoras;     }      public string get_asignatura(){         return asignatura;     } } 

now, prepare list like:

arraylist<mylistitem> marraylist = new arraylist<>();  for(int = 0; < json.length(); i++){     jsonobject c = json.getjsonobject(i);     marraylist.add(         new mylistitem(             c.getstring(tag_codigo),             c.getstring(tag_nombre),             c.getint("estado"),             c.getint("maxhoras"),             c.getstring("programacionid")         )     ); } 

now, ready list, pass custom adapter. if not aware of preparing custom adapter, check link.

once ready making custom adapter, pass list adapter like:

mycustomadapter adapter = new mycustomadapter(context, marraylist);

note: above line strictly depends constructor of custom adapter, say, mycustomadapter

after that, ready adapter, set listview, like:

list.setadapter(adapter);

now, here set onitemclicklistener

list.setonitemclicklistener(new adapterview.onitemclicklistener() {      @override      public void onitemclick(adapterview<?> parent, view view,                                                     int position, long id) {          mylistitem item = (mylistitem)parent.getitem(position);          if(item.get_estado() == 1)          {              intent = new intent(bienvenida.this, registroasistencia.class);              i.putextra("programacion",  item.get_idprogramacion());              i.putextra("maxhoras",  item.get_maxhoras());              startactivity(i);          }          else{              toast.maketext(bienvenida.this, "la clase aún no ha comenzado " + item.get_asignatura(), toast.length_short).show();          }        } }); 

hope trying achieve..

this should out.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -