启动新活动的数组

时间:2012-02-14 00:49:57

标签: android android-activity

好的,我意识到这是非常基本的,但是对于它来说这是不真实的。

我拥有的是一个阵列。我想要的是当用户点击数组中的项目时,它会打开一个特定于该项目的新活动。它是一个节日列表,当您点击其中一个节日时,当您点击它时,它会打开一个活动,提供有关该节日的信息。

我不知道我在这做什么。我很确定我需要使用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",
     };
}

1 个答案:

答案 0 :(得分: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,但知道您可以通过Intent传递更多内容。 See the docs