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"

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.

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

  • Llamando super en extremo
  • Java Java FATAL EXCEPTION java.lang.NullPointerException
  • Cómo jugar video de youtube en ExoPlayer en Android?
  • WebView con cliente HTTP personalizado
  • la importación com.badlogic.gdx.graphics.gl10 no se puede resolver
  • AutoCompleteTextView - deshabilitar el filtrado
  • Integración de Google Drive con la actividad actual
  • ¿Cómo probar Volley Library en el estudio de Android?
  • Almacene una clave o contraseña de forma segura localmente en android
  • Explicación del ejemplo de JetBoy para dev.android.com?
  • ¿Qué hace synchronized () / wait () / notifyAll () en Java?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.