2012-02-14 7 views
0

これは非常に基本的ですが、私はこれを新しいものにしています。新しいアクティビティを開始する配列

私はアレイです。私が望むのは、ユーザーが配列内のアイテムをクリックすると、そのアイテムに固有の新しいアクティビティが開きます。そのフェスティバルのリスト、そしてフェスティバルの1つをクリックすると、それをクリックすると、そのフェスティバルに関する情報を提供するアクティビティが開きます。

私はここで何をしているのか分かりません。私はかなりOnClickListenerを使用する必要があると確信していますが、それはそれです。

活動

package com.MADONK.LAFESTS; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.TextView; 
public class Home extends ListActivity { 
/** Called when the activity is first created. */ 


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

    setListAdapter(new ArrayAdapter<String>(this, R.layout.main, Festivals)); 

    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 

    lv.setOnItemClickListener(new OnItemClickListener() { 
    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[] Festivals = new String[] { 
    "Lake Arthur Regatta", "Contraband Days", "Iowa Rabbit Festival", 
    }; 
} 
+0

いくつかのコードを投稿すると、配列があると言うときに、 – kosa

+0

が表示されます。つまり、ListViewを持っていて、ArrayAdapterに接続しているということですか? –

+0

はい。私はコードを追加しました – Madonk

答えて

0

あなたがListActivityを拡張しているので、あなたがonListItemClick()を上書きすることができます。

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    Festival item = (Festival) l.getItemAtPosition(position); 
    Intent i = new Intent(v.getContext(),YourFestivalDetailActivity.class); 
    i.putExtra("some_attribute", item.getSomeAttribute()); 
    startActivity(i); 
} 

そしてActivityであなたはそれがある開始:あなたはIntentは、別のActivityを開始するために使用され、適切なFestivalオブジェクトを取得し、Intentにそれのメンバーを渡し、このような何かを、行うことができますこの例では、私は唯一の01シングルを渡すこと

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

    String someAttribute = getIntent().getStringExtra("some_attribute"); 
} 

注:あなたがそれを起動するために使用Intentから祭りの情報を抽出する必要があり、上記の例でYourFestivalDetailActivityと呼ばれる祭りの詳細を表示するためのものをIntent経由で送信しますが、それ以上のものはIntentで渡すことができます。 See the docs

+0

、少し良く理解するために、どのような活動を開始するかを知っていますか?またはそれはちょうど1つのアクティビティであり、表示するために他の何かから必要な情報を呼び出しますか?もしそうなら、情報はどこに保存されていますか? – Madonk

+0

最初のコードスニペットでは、YourFestivalDetailActivityというアクティビティを作成したことがわかります。それをインテントコンストラクタに渡しているので、そのアクティビティを開始することを知っている下のstartActivity行があります。アクティビティを作成する必要があります(AndroidManifest.xmlファイルにアクティビティを追加することを忘れないでください)。そのアクティビティは、上の2番目のコードスニペットのコードを実装する必要があります。アイデアは、インテント内のエクストラとしてあなたのフェスティバル情報を渡し、そのインテントで開始されたアクティビティがフェスティバル情報を抽出し、それをTextViewsなどに割り当てることです。 –

+0

その情報はマニフェストに保存されますか?またはlayout.xmlに保存され、2番目のスニペットは配列内の項目の位置に基づいてどのxmlを呼び出すかを指示しますか? – Madonk

関連する問題