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

Respuesta
 
Herramientas
  #1  
Viejo 19/06/13, 06:48:53
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
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
Array

[xs_avatar]
Rockero_79 Rockero_79 no está en línea
Usuario muy activo
 
Fecha de registro: abr 2012
Mensajes: 3,687
Modelo de smartphone: Realme GT Neo 2
Tu operador: Jazztel
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
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
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
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
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
Array

[xs_avatar]
Rockero_79 Rockero_79 no está en línea
Usuario muy activo
 
Fecha de registro: abr 2012
Mensajes: 3,687
Modelo de smartphone: Realme GT Neo 2
Tu operador: Jazztel
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
Array

[xs_avatar]
Gonzalo.gerezm Gonzalo.gerezm no está en línea
Usuario poco activo
 
Fecha de registro: abr 2015
Mensajes: 2
Tu operador: Movistar

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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 00:34:00 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /