2012-02-14 18 views
0

好的,我意識到這是非常基本的,但我很新奇這是它的虛幻。我有什麼是一個數組。我想要的是當用戶單擊數組中的某個項目時,它會打開一個特定於該項目的新活動。它是一個節日清單,當你點擊其中一個節日時,當你點擊它時,它會打開一個活動,提供有關節日的信息。開始新活動的陣列

我不知道我在這裏做什麼。我很確定我需要使用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

Post some code some some will hellp – kosa 2012-02-14 00:52:04

+0

當你說你有一個數組,你的意思是你有一個ListView,並且你已經爲它連接了一個ArrayAdapter? – 2012-02-14 00:52:41

+0

是的。我已經添加了代碼 – Madonk 2012-02-14 00:54:52

回答

0

既然你延長ListActivity,您可以覆蓋onListItemClick()。你可以做這樣的事情,它得到適當的Festival對象,並將其成員爲Intent,那麼Intent用來啓動另一個Activity

@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您啓動意在顯示細節節日,這在上面的例子中被稱爲YourFestivalDetailActivity,你應該提取從Intent節信息來啓動它:

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

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

注意,在這個例子中,我只傳遞一個String通過Intent,但知道你可以通過更多的通過IntentSee the docs

+0

,所以爲了更好地理解,它如何知道要開始哪個活動?或者它只是一個活動,它會從別的東西中調用所需的信息來顯示?如果是這樣,信息存儲在哪裏? – Madonk 2012-02-14 01:05:06

+0

在第一個代碼片段中,您會看到我製作了一個名爲YourFestivalDetailActivity的活動。由於我將它傳遞給Intent構造函數,因此知道啓動該Activity的startActivity行。您應該創建一個Activity(不要忘記將它添加到您的AndroidManifest.xml文件中),並且該活動應該實現上面第二個代碼片段中的代碼。這個想法是,你將一個節日信息作爲額外內容傳遞給一個意圖,然後以該意圖開始的活動可以提取節日信息並將其分配給TextViews或其他任何東西。 – 2012-02-14 01:10:55

+0

所以信息保存在清單中?或者它保存在layout.xml中,第二個片段根據數組中項目的位置告訴它調用哪個xml? – Madonk 2012-02-14 01:18:43