Subtítulos de ListView de Android
Recientemente he creado un nuevo objeto ListView para una aplicación de Android, pero estoy encontrando algunos errores. Cuando intento utilizar un adaptador simple para crear un artículo que incluya un sub-elemento en mi lista, el artículo más nuevo creado se superpone a los otros. Estoy utilizando una lista de mapas para crear los elementos.
Por ejemplo, si agrego un elemento a mi lista de mapas que muestra "1" con un subitem que muestra "A1", se mostrará el elemento y los subitems. Pero si agrego un nuevo elemento a mi lista de mapas denominada "2" con un subitema "B2", los "1" y "A1" serán reemplazados por "2" y "B2". Todavía habrá 2 elementos en el ListView, pero uno de ellos está vacío y el otro es "2" y "B2"
- ¿RestKit en android?
- ¿Pueden las aplicaciones de Android usar jarras compuestas java 8?
- Anónimo Subir objeto de archivo a la API Imgur (JSON) da error de autenticación 401
- EditText leftView image se ajustan al tamaño del EditText Android
- Android studio Acción llamada para ejecutar códigos USSD
Aquí está mi código:
List<Map<String, String>> data = new ArrayList<Map<String, String>>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv = (ListView)findViewById(R.id.listView1); Map<String, String> datum = new HashMap<String, String>(); datum.put("RouterName", "Test1"); datum.put("RouterIP", "SubTest1"); data.add(datum); Map<String, String> datum2 = new HashMap<String, String>(); datum.put("RouterName", "Test2"); datum.put("RouterIP", "SubTest2"); data.add(datum2); SimpleAdapter adapter = new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[] {"RouterName", "RouterIP"}, new int[] {android.R.id.text1, android.R.id.text2}); lv.setAdapter(adapter); }
Cambiar el tipo de lista no funcionará porque el adaptador simple utiliza específicamente una lista de mapas.
- Cambiar el fondo ListView - comportamiento extraño
- Appium no puede obtener datos de atributo "content-desc"
- OverridePendingTransition para actividades deslizantes dentro y fuera suavemente
- Garbage Collection en android (Hecho manualmente)
- Obtenga los horarios de inicio y fin de Google Calendar Events con google-java-api-client en Android
- ¿Es necesario establecer los oyentes de la interfaz Fragment a null en detach?
- Placeholder Fragmento / Actividad principal android.view.InflateException
- Android: diseño predeterminado para listitem que contiene el título y el subtítulo
Hola Encontré algunos errores menores mientras guardaba en Hashmap. En ese objeto HashMap no está creando. La instancia anterior se está eliminando.
Por favor use el siguiente código. Espero que te ayude.
ArrayList<HashMap<String, String>> data; private String[] titleArray,subItemArray; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); ListView lv = (ListView)findViewById(R.id.listview); data = new ArrayList<HashMap<String, String>>(); titleArray=new String[]{"Test1","Test2"}; subItemArray=new String[]{"SubTest1","SubTest2"}; for(int i=0;i<titleArray.length;i++){ HashMap<String,String> datum = new HashMap<String, String>(); datum.put("RouterName", titleArray[i]); datum.put("RouterIP", subItemArray[i]); data.add(datum); } SimpleAdapter adapter = new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[] {"RouterName", "RouterIP"}, new int[] {android.R.id.text1, android.R.id.text2}); lv.setAdapter(adapter); }
Encontré la solución.
En lugar de usar:
Map<String, String> datum = new HashMap<String, String>(); datum.put("RouterName", "Test1"); datum.put("RouterIP", "SubTest1"); data.add(datum);
Podría usar:
HashMap<String,String> datum = new HashMap<String,String>(); temp.put("RouterName","Test1"); temp.put("RouterIP", "SubTest1"); data.add(temp);
Usando HashMap específicamente, se me permite tener varios elementos de lista
- Android: monta una parte de Samba en código
- Aplicación Android publicada, pero no se encuentra en Google Play