2012-05-03 6 views
2

私は学校でプロジェクトに取り組んでおり、ListViewsを正しく実装するのに助けが必要です。プロジェクトの設定とヘルプのセクションを実行する必要があります。現在、私のリストにあるものを表示することができ、選択したアイテムのメッセージをクリックするとToastというメッセージが表示されます。私の質問は、その特定のアイテムの中にあるコンテンツを作成して表示するにはどうすればいいですか?たとえば、私はオプション"Edit Password"を持っており、それをクリックすると私の"Edit Password"画面が表示されるはずです。これは私の両方のセクションに当てはまります。ListView assistance

これはこれまで私が行ってきたことです。基本的にはアンドロイドListViewチュートリアルですが、そこにオプションを追加しました。私の質問は、私のリストにあるオプションの1つをクリックすると、その特定の詳細をどのように表示できますか?私が前に言ったように、"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

これはJavaですか? C#? Androidデバイスの開発ですか?あなたがこれまでに試したことを示さないなら、あなたは答えを得ることはまずありません。私はあなたがいくつかのコードを書こうとし、一度あなたが特定の問題について特定の質問をして立ち往生してみることをお勧めします。 – assylias

答えて

1

あなたはすでにOnItemClickListenerが実施しているListActivityを拡張する場合、あなたはメソッドonListItemClickをオーバーライドする必要があります。その方法では、あなたはあなたが欲しいものを表示する新しいActivityを取得するIntentを使用する必要があります。

@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ですマニフェストファイルにアクティビティを追加する):各種設定画面がその違いがない場合

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