массив, который начинает новую деятельность - PullRequest
0 голосов
/ 14 февраля 2012

Хорошо, я понимаю, что это довольно просто, но я настолько нов в этом, что это нереально.

У меня есть массив.Я хочу, чтобы, когда пользователь щелкает элемент в массиве, он открывает новое действие, специфичное для этого элемента.Это список фестивалей, и когда вы нажимаете на один из фестивалей и когда вы нажимаете на него, он открывает действие, которое предоставляет информацию об этом фестивале.

Я понятия не имею, что я здесь делаю,Я уверен, что мне нужно использовать OnClickListener, но это так.

Activity

 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 голосов
/ 14 февраля 2012

Поскольку вы расширяете 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. См. Документы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...