2012-11-08 35 views
8

Liste görünümündeki tüm liste öğelerinin yeni bir sayfaya açılmasını istiyorum, böylece her bir liste görünümü öğesi kullanabileceğim yeni bir siyah sayfaya açılıyor. Bunu nasıl uygulayacağımı bilmiyorum. Sonunda saatlerce aradım ve çözümüme bir cevap bulamadım. Birinin bağlantı vermek yerine bunu nasıl yapacağını ve/veya nasıl yapılacağını açıklaması çok yararlı olurdu, ancak ya yararlıdır.Android - Tıklanabilir liste görünümü nasıl oluşturulur?

<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> 

Bu benim string.xml

<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> 

Bu benim activity_main.xml içindedir içinde:

İşte şimdiye kadar benim kodudur.

Listemdeki her bir öğeyi tıklanabilir ve yeni bir sayfaya açabilmem için buradan nereye giderim?

Şimdiden teşekkürler!

DÜZENLEME:

Logcat artık alakalı.

cevap

29

oldukça kolaydır:

Bu ListView ile Etkinlik, o bir OnItemClickListener uygular:

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); 
    } 

Edit

Yukarıdaki kod olurdu senin MainActivity.java yerleştirilir. Sınıfın adını MainActivity olarak değiştirdim ve contentView to setContentView(R.layout.activity_main) - Adlar, Eclipse'deki yeni oluşturulmuş bir Android Projesinin isimleri.
Lütfen ayrıca // * Edit * altındaki 2 yeni satıra bakın - bunlar Listedeki öğelerdeki tıklamalar için Dinleyiciyi ayarlayacaklardır.

Kişisel activity_main.xml bu gibi görünmelidir:

sizin `in array.xml (string.xml değil) res/values ​​/` klasör bu

<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> 
benziyor
<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> 

Not: & kopyalarsanız bu kodu yapıştırmanız gerekir. Ancak, ListItemDetail.class'u henüz oluşturmadığınız için bir Öğeyi tıklayarak bir hata alacaksınız.

Sizin 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]); 


    } 

} 

Ve activity_listitem.xml sen işe yarayacak bu kod geçmiş kopyalarsanız

<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> 

İşte bu nasıl görüneceğine dair bir örnektir.

+0

, bu yeniyim. Bunu string.xml veya activity_main.xml içine yerleştirebilir miyim ve bunun içindeki herhangi bir şeyi kendi bilgilerimle değiştirir miydim? –

+0

Cevabımı düzenledim. Umarım bu doğru yolda olur :) – Delpes

+0

Tamam dediğin gibi, bu bana bir hata veriyor, ama ben event_listitem.xml ve ListItemDetail.java ekledim ve uygulama FC's neden bilmiyorum, özellikle çünkü hata yok. –

0

onListItemClick işlevini kullanarak bir sonraki etkinliği yükleyen ve tüm verileri ileten Intent'inizi ayarlayabilirsiniz. Aslında

public void onListItemClick(ListView parent, View view, int position, long id) 
{ 
    Intent intent = new Intent(this, AnotherActivity.class); 
    intent.putExtra("position", position); 
    startActivity(intent); 
} 
0

bu

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)); 

gibi ve listview öğeleri tıklamak gibi string.xml içinde diziden liste görünümü doldurabilir 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); 
    } 
}); 
0

liste görünümü oldukça basit ve kolay method.just kullanımıdır = (ListView) findViewById (R.id.listview);

  • Liste öğesi Üzgünüm

    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); 
         } 
        } 
    }); 
    
İlgili konular