Лучший способ начать новое занятие из просмотра списка по щелчку - PullRequest
1 голос
/ 19 декабря 2011

У меня есть массив, который успешно отображается в виде списка в качестве основного действия.В последние несколько дней я использовал много учебных пособий, чтобы попытаться найти лучший способ начать различные действия с элементов, которые нажимаются в этом списке.Я видел все, от операторов switch до вызова класса по переменной, но, похоже, ничего не работает.Я мог бы использовать оператор if, но в моем списке более 120 записей.Есть предложения?

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Почему бы вам не указать класс в качестве параметра элемента?

    package com.ybi;

    import android.app.ListActivity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;

    public class YbiListActivity extends ListActivity
    {
        public void onCreate(Bundle icicle)
        {
            super.onCreate(icicle);
            ClickableItem[] values = new ClickableItem[1];

                            // here you can add your label and your activity
            values[0] = new ClickableItem("Hello", YbiListActivity.class);

            ArrayAdapter<ClickableItem> adapter = new ArrayAdapter<ClickableItem>(this, android.R.layout.simple_list_item_1, values);
            setListAdapter(adapter);
        }

        @Override
        protected void onListItemClick(ListView l, View v, int position, long id)
        {
            ClickableItem item = (ClickableItem) getListAdapter().getItem(position);
            Intent intent = new Intent(YbiListActivity.this, (Class<?>) item.itemClass);
            startActivity(intent);
            Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
        }

        private class ClickableItem
        {
            public String itemLabel;
            public Object itemClass;

            public ClickableItem(String ilabel, Object iclass)
            {
                itemLabel = ilabel;
                itemClass = iclass;
            }

            @Override
            public String toString()
            {
                return itemLabel;
            }
        }
    }
0 голосов
/ 19 декабря 2011

Вы можете создать два новых массива в arrays.xml (list_items и list_item_activities). Затем, когда элемент выбран, вы можете использовать его индекс, чтобы найти связанную деятельность.более того, вы использовали бы list_items для создания списка:

String[] list = getResources().getStringArray("list_items");
for(int i = 0; i < list.length; i++){
  // add the item
}

Затем, когда по элементу щелкнули:

public void onListItemClick(ListView l, View v, int position, long id){
  String[] activities = getResources().getStringArray("list_item_activities");
  // activities[position] is what you would use
}
...