2012-02-14 54 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