Android - Как создать интерактивный просмотр списка?

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

Вот мой код до сих пор:

  
    Pro Constructive
    Con Constructive
    1st Speaker Cross
    Pro Rebbutal
    Con Rebuttal
    2nd Speaker Cross
    Pro Summary
    Con Summary
    Grand Cross
    Pro Final Focus
    Con Final Focus

Это в моем string.xml

    

Это в моем Activity_main.xml.

Куда мне пойти отсюда, чтобы сделать каждый элемент в моем списке кликабельным и открыть его на новой странице?

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Logcat больше не актуален.

Ответы на вопрос(4)

String[] myKeys = getResources().getStringArray(R.array.sections);
ListView mListView = (ListView)findViewById(R.id.listView1);
mListView.setAdapter(new ArrayAdapter<string>(this, android.R.layout.simple_list_item_1, myKeys));  
</string>

и нажатие на элементы списка является довольно простым и легким методом. Просто используйтеsetOnItemClickListener

mListView.setOnItemClickListener(new OnItemClickListener() 
{
    public void onItemClick(AdapterView<!--?--> arg0,View arg1, int position, long arg3) 
    {

        Intent n = new Intent(getApplicationContext(), yourclass.class);
        n.putExtra("position", position);
        startActivity(n);
    }
});

Элемент списка

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<!--?--> parent, View view, int position, long id) {

        if(position==0){
            Intent i=new Intent(MainActivity.this,Main3Activity.class);
            startActivity(i);
        }
    }
});

Вы используетеonListItemClick Функция для установки вашего намерения, которое загружает следующее действие и передает любые данные.

public void onListItemClick(ListView parent, View view, int position, long id)
{
    Intent intent = new Intent(this, AnotherActivity.class);
    intent.putExtra("position", position);
    startActivity(intent);
}
Решение Вопроса

Это ваша активность с ListView, он реализует OnItemClickListener:

public class MainActivity extends Activity implements OnItemClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        //* *EDIT* * 
        ListView listview = (ListView) findViewById(R.id.listView1);
        listview.setOnItemClickListener(this);
    }

    public void onItemClick(AdapterView<!--?--> l, View v, int position, long id) {
        Log.i("HelloListView", "You clicked Item: " + id + " at position:" + position);
            // Then you start a new Activity via Intent
            Intent intent = new Intent();
            intent.setClass(this, ListItemDetail.class);
            intent.putExtra("position", position);
            // Or / And
            intent.putExtra("id", id);
            startActivity(intent);
    }

редактировать

Приведенный выше код будет размещен в вашем MainActivity.java. Я изменил название класса наMainActivity и contentView дляsetContentView(R.layout.activity_main) - Имена только что созданного Android-проекта в Eclipse.

Пожалуйста, смотрите также 2 новые строки под // *редактировать * - те, кто установит Слушатель для кликов по элементам в списке.

Ваш Activity_main.xml должен выглядеть следующим образом:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content">

    <listview android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:entries="@array/sections">
    </listview>
</relativelayout>

array.xml (не string.xml) в вашей папке `res / values /` выглядит следующим образом

<resources>
    <string-array name="sections">
        <item>Pro Constructive</item>
        <item>Con Constructive</item>
        <item>1st Speaker Cross</item>
        <item>Pro Rebbutal</item>
        <item>Con Rebuttal</item>
        <item>2nd Speaker Cross</item>
        <item>Pro Summary</item>
        <item>Con Summary</item>
        <item>Grand Cross</item>
        <item>Pro Final Focus</item>
        <item>Con Final Focus</item>
    </string-array>
</resources>

N.B .: Если вы копируете & Вставьте этот код, он должен работать. Но вы получите ошибку, нажав на элемент, потому что у вас нетт создалListItemDetail.class еще.

Вот пример того, как это может выглядеть:

Ваш ListItemDetail.java:

public class ListItemDetail extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listitem);

    Intent intent = getIntent();
    int position = intent.getIntExtra("position", 0);

    // Here we turn your string.xml in an array
    String[] myKeys = getResources().getStringArray(R.array.sections);

    TextView myTextView = (TextView) findViewById(R.id.my_textview);
    myTextView.setText(myKeys[position]);


    }

}

И его активность_listitem.xml

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">

    <textview android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/my_textview">

</textview></linearlayout>

Если вы скопируете этот код, он сработает.

 Michael Abreu09 нояб. 2012 г., 04:07
Я добавил ошибку logcat, чтобы вы увидели. Может мне нужно что-то объявить в Манифесте?
 Delpes09 нояб. 2012 г., 00:14
Для облегчения я заархивировал файлы:ego.lu/stuff/listview.zip - Сканируйте с www.virustotal.com, чтобы убедитьсяs save;) - там находятся файлы .java и .xml
 Michael Abreu09 нояб. 2012 г., 04:19
Итак, я проверил класс в моем манифесте, как вы сказали, и это решило проблему, за исключением того, что теперь мой массив не 'не показывай
 Delpes08 нояб. 2012 г., 12:58
Я отредактировал свой ответ. Надеюсь, что это приведет вас на правильный путь :)
 Delpes09 нояб. 2012 г., 00:33
Да, и убедитесь, что вы включили класс в свой манифест: (Я мог бы оставить его с именем TextActivity)
 Michael Abreu08 нояб. 2012 г., 22:16
Хорошо, так как вы сказали, это дает мне ошибку, но я добавил активность_listitem.xml и ListItemDetail.java, и я нене знаю, почему приложение FC 'с, особенно потому, что у меня нет ошибок.
 Michael Abreu09 нояб. 2012 г., 00:31
Хорошо яЯ сравню ваш с моим и сообщу позже. Спасибо, что даже сделал это, выЯ был реальной помощью.
 Michael Abreu08 нояб. 2012 г., 05:57
извини, яЯ новичок в этом. Поместил бы я это в string.xml или activity_main.xml, и я бы заменил что-нибудь в этом с моей собственной информацией?
 Delpes08 нояб. 2012 г., 23:48
Вы создали файл array.xml в / res / values / - без ошибокs просто гадать: / Попробовал мой код снова в затмении, и это работает

Ваш ответ на вопрос