2

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

これは私がこれまでに持っているものです。基本的には Android のListViewチュートリアルですが、そこにオプションを追加しました。私の質問は、リストのオプションの 1 つをクリックしたときに、その特定の詳細を表示するにはどうすればよいですか? 前に言ったように、 をクリック"Edit Password"すると"Edit Password"画面に移動します。または、ヘルプで、たとえば「Credits」をクリックすると、Credits ページに移動します。

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"};

}

4

1 に答える 1

1

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

@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
}

SeconActivityNameActivity作成する必要があり、必要な他の画面を表示する場所です(マニフェストファイルにアクティビティを追加することを忘れないでください!):

    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し、位置パラメータに基づいて適切なアクティビティを開始する必要があります。

于 2012-05-04T04:23:09.300 に答える