2012-10-12 61 views
0

我正嘗試構建一個自定義Listview,並在右側顯示圖像,正文和子文本。主要問題是我沒有得到任何錯誤,並顯示一個空白的視圖。我可以點擊它,但我在ListView上看不到任何內容。我的代碼:爲ListView使用HashMap時無法在ListView中看到任何內容

public class MenuScreen extends Activity {    
      TextView maintext, subtext; 
      ImageView icon ; 

        private static final String [] menuitems = {"Availability","Messages","Greetings","Address Book","Calls","Settings"}; 
        private static final int [] menu_icons = {R.drawable.menu_availability,R.drawable.menu_messages,R.drawable.menu_greetings,R.drawable.menu_contacts,R.drawable.menu_calls,R.drawable.menu_settings}; 
        private static String [] submenu_items = {"1","2","3","4","5","6"}; 
        @Override 
         protected void onCreate(Bundle savedInstanceState) { 
          // TODO Auto-generated method stub 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.menulogin_main); 
          maintext = (TextView)findViewById(R.id.tvMainText); 
          subtext = (TextView)findViewById(R.id.tvSubText); 
          icon = (ImageView)findViewById(R.id.iicon); 

          List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 
          for(int i=0;i<6;i++){ 
            HashMap<String, String> hm = new HashMap<String,String>(); 
            hm.put("tvMainText", "MainText : " + menuitems[i]); 
            hm.put("tvSubText","SubText : " + submenu_items[i]); 
            hm.put("iicon", Integer.toString(menu_icons[i])); 
            aList.add(hm); 
           } 

          String[] from = { "iicon","tvMainText","tvSubText" }; 

          int[] to = { R.id.iicon , R.id.tvMainText, R.id.tvSubText} ; 

          SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.menulogin_main, from, to); 

           // Getting a reference to listview of main.xml layout file 
           ListView listView = (ListView) findViewById(R.id.listmenu); 

           // Setting the adapter to the listView 
           listView.setAdapter(adapter); 
          listView.setOnItemClickListener(new OnItemClickListener() { 

           public void onItemClick(AdapterView<?> listview, View view, 
             int position, long id) { 
            switch(position){ 

            case 0 : 
             Intent avail = new Intent(MenuScreen.this,Availability.class); 
             startActivity(avail); 

            break; 
            } 

           } 
          }); 

        } 

       } 

佈局文件,menulogin_main:該行

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/background" 
     android:orientation="vertical" > 


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

     </ListView> 

    </LinearLayout> 

佈局文件,menulogin:

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


     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <ImageView 
       android:id="@+id/iicon" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_margin="10dp" 
       android:src="@drawable/logon_image" /> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 

       <TextView 
        android:id="@+id/tvMainText" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginBottom="5dp" 
        android:layout_marginTop="5dp" 
        android:text="MAIN TEXT" 
        android:textAppearance="?android:attr/textAppearanceLarge" /> 

       <TextView 
        android:id="@+id/tvSubText" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="SUB TEXT" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 
      </LinearLayout> 
     </LinearLayout> 

    </LinearLayout> 
+0

圖標不應該是一個字符串。使用HashMap 併爲圖標設置一個int。 SimpleAdapter文檔說(關於參數:這些都應該是TextViews)。 (但它應該有一個imageview綁定器,所以我不知道)。 – njzk2

回答

1

因爲佈局文件的這可能是發生了你使用。對於活動佈局(R.layout.menulogin_main),您具有相同的佈局文件,但是您也可以對ListView的適配器使用相同的佈局文件。現在,您的ListView(與id R.id.listmenu)和行視圖(R.id.iicon,R.id.tvMainText,R.id.tvSubText)在相同的佈局(R.layout.menulogin_main)和ListView涵蓋這些視圖或打算使用ListView行的另一個佈局,而不是R.layout.menulogin_main(但這可能會引發異常)。

您應該爲ListView的行設計一個特殊的佈局文件,其中包含只有需要的視圖。

編輯:爲menu_login 版式文件:

<?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" > 

    <ImageView 
     android:id="@+id/iicon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:src="@drawable/ic_launcher" /> 

    <TextView 
     android:id="@+id/tvSubText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_toRightOf="@id/iicon" 
     android:text="SUB TEXT" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/tvMainText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/tvSubText" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="5dp" 
     android:layout_marginTop="5dp" 
     android:layout_toRightOf="@id/iicon" 
     android:text="MAIN TEXT" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</RelativeLayout> 
+0

我可以看到我的主要文本,但不是子文本 – chitranna

+0

@ user1693503查看我編輯的答案。 – Luksprog

+0

非常感謝 – chitranna

相關問題