2013-01-06 3 views
-1

"기본 메뉴"항목의 목록을 표시하는 활동이 있습니다. 각 목록 항목은 클릭 할 때 새로운 활동을 시작해야합니다. 클래스 이름을 사용하여 적절한 활동을로드하여이 작업을 수행합니다."기본 메뉴"ListView를 구현하는 방법은 무엇입니까?

코드 :

public class MenuActivity extends ListActivity { 

    String classes[] = { "AboutUsActivity", "CompanyProfileActivity", "ProductsActivity", "ContactActivity" }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, classes)); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 

     super.onListItemClick(l, v, position, id); 

     String cheese = classes[position]; 
     try { 
      Class ourClass = Class.forName("com.example.test." + cheese); 
      Intent ourIntent = new Intent(this, ourClass); 
      startActivity(ourIntent); 
     } 
     catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 

나는이 목록에 클래스 이름을 저장하고 있습니다 때문에, 즉 사용자에게 표시되는 것입니다, 그래서하지 매우 사용하기 쉬운입니다. 이 문제를 어떻게 해결할 수 있습니까?

예를 들어 'AboutUs'를 표시하는 대신 'About Us'또는 'About Company 's Name'과 같은 목록을 표시하려면 어떻게해야합니까?

답변

2

이보십시오.

+0

위대한 작품! 정말 고맙습니다! 나 좀 도둑질 당했어! –

+0

누군가가 왜 이것이 나쁜 질문이라고 설명 할 수 있습니까 ??? 메신저 게시 금지 및 왜 2 부정적인 게시물을 모르겠어요? 나는 여기에 어떤 규칙을 놓치고 있느냐? ??? –

0

두 개의 배열을 사용하십시오. 하나는 클래스 용이고 다른 하나는 표시 할 이름 용입니다.

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class MenuActivity extends ListActivity 
{ 
    private String[] menuItems = { "About Us", "Company Profile", "Products", "Contact" }; 
    private String[] menuClassNames = { AboutUsActivity.class.getName(), CompanyProfileActivity.class.getName(), ProductsActivity.class.getName(), ContactActivity.class.getName() }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, menuItems)); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) 
    { 
     super.onListItemClick(l, v, position, id); 
     try 
     { 
      Intent intent = new Intent(this, Class.forName(menuClassNames[position])); 
      startActivity(intent); 
     } 
     catch (ClassNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

다른 방법으로, menuClassNamesClass[]을 할 수 있고, 당신은 이름으로 클래스를 로딩하는 추가 단계를 갈 필요가 없습니다 것입니다 :

관련 문제