2012-05-03 4 views
2

저는 학교에서 프로젝트를 진행하고 있으며 ListViews을 올바르게 구현하는 데 도움이 필요합니다. 프로젝트에서 설정 및 도움말 섹션을 수행해야하며 현재로서는 내 목록에있는 항목을 표시 할 수 있으며 클릭하면 선택한 항목의 Toast 메시지가 표시됩니다. 내 질문은 특정 항목 안에있는 콘텐츠를 만들고 표시하는 방법입니다. 예를 들어, 내가 "Edit Password" 옵션을 가지고 있고 그것을 클릭하면 내 "Edit Password" 화면이 표시되어야합니다. 이것은 두 섹션 모두에 적용됩니다.ListView assistance

이것은 내가 지금까지 가지고있는 것입니다. 그것은 기본적으로 안드로이드 ListView 자습서지만, 거기에 내 옵션을 추가했습니다. 내 질문에, 내 목록에있는 옵션 중 하나를 클릭하면 특정 세부 정보를 어떻게 표시 할 수 있습니까? 이전에 말한 것과 마찬가지로 "Edit Password"을 클릭하면 "Edit Password" 화면으로 이동합니다. 또는 도움말에서 '크레디트'를 클릭하면 크레딧 페이지로 직접 연결됩니다.

public class Settings extends ListActivity { 
     /** Called when the activity is first created. */ 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setListAdapter(new ArrayAdapter<String>(this, R.layout.settings, SETTINGS)); 

      ListView lv = getListView(); 
      lv.setTextFilterEnabled(true); 
      lv.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
        long id) 
      { 
       // When clicked, show a toast with the TextView text 
       Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
         Toast.LENGTH_SHORT).show(); 
      } 
      }); 
     } 

    static final String[] SETTINGS = new String[] 
      {"Set Refresh Rate", "Edit Password", "Delete Account"}; 

}

+1

사용중인 언어/장치는 무엇입니까? – assylias

+0

프로젝트 용으로 Eclipse를 사용하고 있습니다. – wasabiman

+0

이 자바는 괜찮습니까? 기음#? Android 기기 개발? 등. 그리고 지금까지 시도한 것을 보여주지 않으면 답을 얻지 못할 수도 있습니다. 나는 당신이 어떤 코드를 작성하려고 시도하고 일단 당신이 특정 문제에 대해 특정 질문을 물어볼 것을 제안합니다. – assylias

답변

1

당신이 ListActivity을 확장 당신은 이미 당신이 방법 onListItemClick를 오버라이드 (override)의 OnItemClickListener 구현해야합니다.

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    Intent i = new Intent(this, SecondActivityName.class); 
    i.putExtra("pos", position); //pass the position of the clicked row so we know what to show. 
    startActivity(i); // let's go to the other activity 
} 

SeconActivityName 당신이 작성해야 Activity하고 원하는 다른 화면을 표시 할 경우 (기억 : 당신은 당신이 원하는 물건을 표시 곳이 방법에서는 새 Activity에 도착하는 Intent를 사용한다 매니페스트 파일에 액티비티를 추가하십시오!) :

public class SecondActivityName extends Activity { 

    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
       Intent i = getIntent(); 
       int rowPosition = i.getIntExtra("pos", -1); //we now have the row's position that was clicked in the other activity. 
       // based on that you show the screen you want for example after a switch 
       switch (rowPosition) { 
        case -1: 
         //this is the default value, something has gone terrible wrong 
         //finish the activity and hide: 
         finish(); 
         break; 
        case 0: 
         //row 0 was clicked so show the "Set Refresh Rate" screen 
         setContentView(R.layout.refresh_rate__screen); 
         break; 
       //do the same for the other rows; 
//... 

다양한 설정의 화면이 다르면 작동합니다. 그들이있는 경우 각각에 대해 서로 다른 활동을 구현하고 위치 매개 변수에 따라 onListItemClick에서 적절한 활동을 시작해야 할 것입니다.

+0

감사합니다. 그러나 .. 이런 말을하는 것이 유감이지만, ListActivity 대신 SherlockActivity를 확장하고 싶다면 여전히 적용 되는가? – wasabiman

+0

시도했지만 작동하지 않습니다. 항목을 클릭하면 앱이 다운되었습니다. – wasabiman

+0

@wasabiman'ActionBarSherlock'을 사용하고 싶다면'SherlockListActivity'를 확장하여'ListActivity'에'ActionBar'를 갖도록 할 수 있습니다 ('SherlockActivity'를 확장한다면'ListView'로 자신의 레이아웃을 제공해야 할 것입니다)). 내가 왜 당신의 코드가 충돌하는지 추측 할 수 없다. 나는 당신이'Logcat'에서 얻은 예외를보아야 만한다. 또한 일부 코드를 잊어 버렸습니다. 내 코드에서 이것이 충돌의 원인이 아니길 바란다. – Luksprog