Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 19/06/13, 06:48:53
Avatar de rafaxplayer
rafaxplayer rafaxplayer no está en línea
Miembro del foro
Mensajes: 224
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
hashmap

buenas compañero , estoy trasteando con hashmap para crear unas listas y aprender de que va , ya que nunca lo había utilizado , al leer sobre ello no veo dificultad , pero en una practica sencilla como cargar una lista con hashmaps no consigo que función , siempre me sale en blanco , os dejo el codigo para ver si me sacáis de dudas

MainActivity:

Código:
public class MainActivity extends Activity {

ListView lst;
ListAdapter adp;

static final String KEY_ID = "id";
static final String KEY_NAME = "Name";
static final String KEY_TLF = "TLF";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ArrayList<HashMap<String, String>> arr = new ArrayList<HashMap<String,String>>();
		lst=(ListView)findViewById(R.id.listView1);
		
		for(int i=0; i < 100; i++){
			HashMap<String,String> h = new HashMap<String,String>();
			h.put(KEY_ID, String.valueOf(i));
			h.put(KEY_NAME, String.valueOf("nombre"+i));
			h.put(KEY_TLF, String.valueOf(i*123457));
			arr.add(h);
			
		}
		adp = new ListAdapter(this,arr);
		
		//Log.d("count",String.valueOf(arr.size()));
		
		lst.setAdapter(adp);
		
	}
Y listadapter class:

Código:
public class ListAdapter extends BaseAdapter {
	ArrayList<HashMap<String,String>> arr;
	Context context;
	LayoutInflater inflater;
	public ListAdapter(Context con, ArrayList<HashMap<String,String>> mp){
		this.context = con;
		this.arr = mp;
		this.inflater = (LayoutInflater)con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return arr.size();
	}
	@Override
	public HashMap<String,String> getItem(int position) {
		// TODO Auto-generated method stub
		return arr.get(position);
	}
	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}
	
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View vi = convertView;
		
        if(convertView == null)
            vi = inflater.inflate(R.layout.items, null);
 
            TextView name = (TextView)vi.findViewById(R.id.textView1);
            TextView tlf = (TextView)vi.findViewById(R.id.textView2); 
            TextView id  = (TextView)vi.findViewById(R.id.textView3); 
           
            HashMap<String,String> cont = new HashMap<String,String>();
            cont = arr.get(position);
         
	        
	        name.setText(cont.get(MainActivity.KEY_NAME));
	        tlf.setText(cont.get(MainActivity.KEY_TLF));
	        id.setText(cont.get(MainActivity.KEY_ID));
	        //Log.d("Name",cont.get(MainActivity.KEY_NAME));
	        
	        return vi;
		
	}
Responder Con Cita


  #2  
Viejo 19/06/13, 10:18:53
Avatar de Rockero_79
Rockero_79 Rockero_79 no está en línea
Usuario muy activo
Mensajes: 3,687
 
Fecha de registro: abr 2012
Mensajes: 3,687
Modelo de smartphone: Realme GT Neo 2
Versión de ROM: Android 13
Tu operador: Jazztel
Mencionado: 3 comentarios
Tagged: 2 hilos
Mira esta página

http://toolboxnet.blogspot.com.es/20...l#.UcFpH-cqybU

para recorrerlo tienes que usar un iterator.

Yo lo he utilizado en java en Android de momento no.
Responder Con Cita
  #3  
Viejo 19/06/13, 15:49:26
Avatar de rafaxplayer
rafaxplayer rafaxplayer no está en línea
Miembro del foro
Mensajes: 224
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno no consigo listar los maps , he añadido el iterator para recorrerlos pero me sigue quedando en blanco la lista , asi ha quedado el adapter:

Código:
public class ListAdapter extends BaseAdapter {
	ArrayList<HashMap<String,String>> arr;
	Context context;
	LayoutInflater inflater;
	public ListAdapter(Context con, ArrayList<HashMap<String,String>> mp){
		this.context = con;
		this.arr = mp;
		this.inflater = (LayoutInflater)con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return arr.size();
	}
	@Override
	public HashMap<String,String> getItem(int position) {
		// TODO Auto-generated method stub
		return arr.get(position);
	}
	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}
	
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View vi = convertView;
		
        if(convertView == null)
            vi = inflater.inflate(R.layout.items, null);
 
            TextView name =(TextView)vi.findViewById(R.id.textView1);
            TextView tlf =(TextView)vi.findViewById(R.id.textView2); 
            TextView id  =(TextView)vi.findViewById(R.id.textView3); 
           
            HashMap<String,String> cont = new HashMap<String,String>();
            cont = arr.get(position);
         
            
            Iterator itr = cont.entrySet().iterator();
            while (itr.hasNext()){
            	name.setText(cont.get(MainActivity.KEY_NAME));
            	tlf.setText(cont.get(MainActivity.KEY_TLF));
            	id.setText(cont.get(MainActivity.KEY_ID));
	        //Log.d("Name",cont.get(MainActivity.KEY_NAME));
            }
	        return vi;
	}
	
	

}
Responder Con Cita
  #4  
Viejo 20/06/13, 07:55:51
Avatar de rafaxplayer
rafaxplayer rafaxplayer no está en línea
Miembro del foro
Mensajes: 224
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno al final me he dado cuenta que para usar hashmap no puedo usar customadapter solo lo he conseguido con el simple adapter y eso que lo he intentado XD , podéis cerrar este tema, gracias por la respuesta.
Responder Con Cita
  #5  
Viejo 20/06/13, 10:55:16
Avatar de Rockero_79
Rockero_79 Rockero_79 no está en línea
Usuario muy activo
Mensajes: 3,687
 
Fecha de registro: abr 2012
Mensajes: 3,687
Modelo de smartphone: Realme GT Neo 2
Versión de ROM: Android 13
Tu operador: Jazztel
Mencionado: 3 comentarios
Tagged: 2 hilos
creo que el error lo tienes en el while.
Iterator itr = cont.entrySet().iterator();
while (itr.hasNext()){
Map.Entry e = (Map.Entry)it.next();
name.setText(e.getKey());
tlf.setText(e.getValue());
id.setText(e.getKey());
//Log.d("Name",cont.get(e.getValue));
}
aunque creo que es mas complejo aun, tu a un hasmap le pasas dos valores, uno de ellos debe ser un identificador , si quieres pasarle más debes hacer una clase y luego para extraer los valores hacer getters dentro de esa clase...yo lo veo bastante lio

Última edición por Rockero_79 Día 20/06/13 a las 10:55:52 Razón: .
Responder Con Cita
  #6  
Viejo 08/04/15, 15:12:52
Avatar de Gonzalo.gerezm
Gonzalo.gerezm Gonzalo.gerezm no está en línea
Usuario poco activo
Mensajes: 2
 
Fecha de registro: abr 2015
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
hola veo que es viejos el tema, pero si puedes usar customAdapter con hashmap.. ahora comparto el codigo que funciona. Saludos

public class ListViewAdapter extends BaseAdapter implements Filterable{

Context contexto;
LayoutInflater inflater;
ArrayList<HashMap<String,String>> datos;
HashMap<String,String> map = new HashMap<String,String>();

public ListViewAdapter(Context a, ArrayList<HashMap<String,String>> array)
{
contexto=a;
datos=array;
originalData = array;
temporyList = array;
}


@override
public int getCount() {
// TODO Auto-generated method stub
return datos.size();
}


@override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}


@override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}


@override
public View getView(int position, View convertView, ViewGroup parent) {
TextView articulo;
TextView id;
View itemView;
if(convertView==null){
inflater= (LayoutInflater) contexto.getSystemService(Context.LAYOUT_INFLATER_ SERVICE);

itemView = inflater.inflate(R.layout.list_item, null);}
else{
itemView=convertView;}

map = datos.get(position);


articulo = (TextView) itemView.findViewById(R.id.tarea);
id = (TextView) itemView.findViewById(R.id.hora);


articulo.setText(map.get("Desc_art").toString());
id.setText(map.get("cod_art").toString());

return itemView;
}
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 13:09:23 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007