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

<p>я хочу, чтобы все мои элементы списка в виде списка открывались на новой странице, поэтому каждый элемент списка открывается на новой черной странице, которую я могу использовать. я вообще не знаю, как это реализовать. я искал несколько часов подряд и не могу найти ответ на свое решение. было бы очень признательно, если бы кто-то мог показать и/или объяснить, как это сделать, вместо предоставления ссылки, но любой из них полезен.</p><p>вот мой код до сих пор:</p><pre><code> <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> </code></pre><p>это в моем string.xml</p><pre><code> <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> </code></pre><p>это в моей деятельности.</p><p>куда мне пойти отсюда, чтобы сделать каждый элемент в моем списке кликабельным и открыть его на новой странице?</p><p>заранее спасибо!</p><p>правка:</p><p>logcat больше не актуален.</p>

<p>на самом деле это довольно просто:</p><p>это ваша активность с listview, он реализует onitemclicklistener:</p><pre><code>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); } </code></pre><p><b>правка</b></p><p>приведенный выше код будет размещен в вашем mainactivity.java. я изменил имя класса на <code>mainactivity</code> и contentview на <code>setcontentview(r.layout.activity\_main)</code> - имена принадлежат только что созданному android-проекту в eclipse. <br>пожалуйста, смотрите также 2 новые строки в разделе * *<em> edit </em>* - они будут устанавливать прослушиватель для кликов по элементам в списке.</p><p>ваш activity\_main.xml должен выглядеть следующим образом:</p><pre><code><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> </code></pre><p> <b>array.xml</b> (не string.xml) в вашей папке `res/values /` выглядит следующим образом</p><pre><code><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> </code></pre><p>n.b .: если вы скопируете и вставите этот код, он должен работать. но вы получите ошибку, нажав на элемент, потому что вы еще не создали <code>listitemdetail.class</code>.<p>вот пример того, как это может выглядеть:</p><p>ваш listitemdetail.java:</p><pre><code>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]); } } </code></pre><p>и его активность\_listitem.xml</p><pre><code><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"/> </linearlayout> </code></pre><p>если вы скопируете этот код, он будет работать.</p>

<p>вы можете заполнить listview из массива в string.xml следующим образом</p><pre><code>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)); </code></pre><p>и щелкать по элементам списка довольно легко и просто. просто используйте <a href="http://developer.android.com/reference/android/widget/adapterview.onitemclicklistener.html">setonitemclicklistener</a> </p><pre><code>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); } }); </code></pre>

<p>вы используете функцию <code>onlistitemclick</code> для настройки вашего намерения, которое загружает следующее действие и передает любые данные.</p><pre><code>public void onlistitemclick(listview parent, view view, int position, long id) { intent intent = new intent(this, anotheractivity.class); intent.putextra("position", position); startactivity(intent); } </code></pre>

<p>listview = (listview) findviewbyid (r.id.listview);</p><ul> <li><p>элемент списка</p> <pre><code>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); } } }); </code></pre></li> </ul>