2015-10-23 78 views
-3

我想用HaspMap類創建一個listview活動來插入星球,但是文本沒有顯示。 這裏是代碼Android列表視圖不顯示列表內容

ListView類 package com.thenextgeneration.listviewtest;

import java.util.ArrayList; 

    import java.util.HashMap; 

    import java.util.List; 

    import java.util.Map; 


    import android.app.Activity; 

    import android.os.Bundle; 

    import android.widget.ListView; 

    import android.widget.SimpleAdapter; 


    public class Second extends Activity{ 


    ListView listview; 


    @Override 

    protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 

    initList(); 

    listview = (ListView) findViewById(R.id.listView1); 

    SimpleAdapter simpleAdpt = new SimpleAdapter(this, planetsList, 
    android.R.layout.simple_list_item_2, new String[] {"planet"}, new 
    int[] {android.R.id.text2}); 
    listview.setAdapter(simpleAdpt); 

    } 


    List<Map<String, String>> planetsList = new ArrayList<Map<String, 
    String>>(); 


    private void initList() { 
    // TODO Auto-generated method stub 
    planetsList.add(createPlanet("planet", "Mercury")); 
    planetsList.add(createPlanet("planet", "Umaru Musa Yaradua 
    University")); 
    planetsList.add(createPlanet("planet", "Jupiter")); 
    planetsList.add(createPlanet("planet", "Earth")); 
    planetsList.add(createPlanet("planet", "Mars")); 
    planetsList.add(createPlanet("planet", "Venus")); 
    planetsList.add(createPlanet("planet", "Uranus")); 
    planetsList.add(createPlanet("planet", "Saturn")); 
    planetsList.add(createPlanet("planet", "Neptune")); 


    } 


    private HashMap<String, String> createPlanet(String key, String 
    name) { 
    // TODO Auto-generated method stub 
    HashMap<String, String> planet = new HashMap<String, String>(); 
    return planet; 

    } 




    } 

XML佈局

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res /android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
     > 
     </ListView> 

    </RelativeLayout> 

它顯示列表中,但有一個空的文本,我已經安裝了應用程序在我的設備瓦努阿圖它仍然沒有任何

+0

設置適配器後可能需要'listview.notifyDatasetChanged()'。 –

回答

0

這是你的答案,你已經命名爲「android.R.id.text2」而不是「android.R.id.text1」。 我建議你按順序編碼。請享用!

ListView listview; 
List<Map<String, String>> planetsList; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 
    planetsList = new ArrayList<Map<String, String>>(); 
    initList(); 

    listview = new ListView(this); 

    SimpleAdapter simpleAdpt = new SimpleAdapter(this, planetsList, 
      android.R.layout.simple_list_item_1, new String[] { "planet" }, 
      new int[] { android.R.id.text1 }); 
    listview.setAdapter(simpleAdpt); 
    setContentView(listview); 

} 

private void initList() { 

    Map<String, String> item; 
    item = new HashMap<String, String>(); 
    item.put("planet", "Mercury"); 
    planetsList.add(item); 
    item = new HashMap<String, String>(); 
    item.put("planet", "Jupiter"); 
    planetsList.add(item); 
    item = new HashMap<String, String>(); 
    item.put("planet", "Mars"); 
    planetsList.add(item); 
} 
+0

這真的很有幫助,現在它可以工作 –

0

改變你的方法只顯示n此列表到:

private HashMap<String, String> createPlanet(String key, String 
     name) { 
     // TODO Auto-generated method stub 
     HashMap<String, String> planet = new HashMap<String, String>(); 
     planet.put(key,name); 
     return planet; 

     } 
0

你的代碼是錯過的地方。您首先將planetsList添加到適配器,然後初始化並將值分配給planetsList。首先初始化它,並在其中放入值,然後發送到適配器或在代碼中使用notifydataset與適配器一起使用。