Добавление нескольких событий в просмотр списка - PullRequest
0 голосов
/ 16 февраля 2012

Я искал stackoverflow, но не смог найти ответ (уверен, что он где-то есть), но я пытаюсь добавить действие для каждого ввода списка. Я могу управлять этим с одним намерением, но как дать каждому входу в просмотр списка отдельное действие. Итак, чтобы быть ясным, я хочу, чтобы каждый предмет имел отдельную активность.

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

public class ListviewActivityActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // storing string resources into Array
    String[] adobe_products = getResources().getStringArray(R.array.list_products);

    // Binding resources Array to ListAdapter
    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, adobe_products));

    ListView lv = getListView();

    // listening to single list item on click
    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {

          // selected item
          String product = ((TextView) view).getText().toString();

          // Launching new Activity on selecting single List Item
          Intent i = new Intent(getApplicationContext(), BMICalculatorActivity.class);
          startActivity(i);


      }
    });
}

Попытался добавить это, но это не сработало

private static final int ACTIVITY_0 = 0;
          private static final int ACTIVITY_1 = 1;
          private static final int ACTIVITY_2 = 2;


          protected void onListItemClick(ListView l, View v, int position, long id)
          {
              super.onListItemClick(l, v, position, id);
              final Intent intent = new Intent();
              // Set up different intents based on the item clicked: 
              switch (position)
              {
                  case ACTIVITY_0:
                      intent.setClass(this, listview.activty.BMICalculatorActivity.class);
                      break;
                  case ACTIVITY_1:
                      intent.setClass(this, listview.activty.BodyLog.class);
                      break;

Я знаю, что это, вероятно, просто отсортировать, поэтому любая помощь будет потрясающей. Спасибо

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

Я думаю, вы хотите что-то вроде этого:

     Intent i = null;
     switch (position)
          {
              case ACTIVITY_0:
                  i = new Intent(getApplicationContext(), BMICalculatorActivity.class);
                  break;
              case ACTIVITY_1:
                  i = new Intent(getApplicationContext(), BodyLog.class);
                  break;
          }

      if(i != null)
      {
         startActivity(i);
      }
0 голосов
/ 16 февраля 2012

Попробуйте что-то вроде этого:

// listening to single list item on click
    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {

          Intent i;

          // selected item
          String product = (String) lv.getItem(position);
          if(product.equals("photoshop"))
                        i = new Intent(ListviewActivity.this, Photoshop.class);
          else if (product.equals("final cut pro"))
                        i = new Intent(ListviewActivity.this, FinalCutPro.class);
          else
                        i = new Intent(ListviewActivity.this, Generic.class);

          startActivity(i);


      }
    });

Другим вариантом может быть создание POJO, содержащего имя записи списка и класс для вызова. И добавить массив из них вместо массива строк. Это потребует использования ArrayAdapter некоторого вида. Затем, когда вы получаете Предмет, вы просто звоните startActivity(new Intent(listviewActivity.this, myPojo.classToCall);. Вы должны быть в состоянии найти хороший пример этого где-то на SO ...

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