2012-11-08 28 views
8

Tôi muốn làm cho tất cả các mục danh sách của tôi trong listview mở ra thành một trang mới, vì vậy mỗi mục listview mở ra trên một trang đen mới mà tôi có thể sử dụng. Tôi không biết làm thế nào để thực hiện điều này cả. Tôi đã tìm kiếm giờ kết thúc và không thể tìm thấy câu trả lời cho giải pháp của tôi. Nó sẽ được đánh giá cao nếu ai đó có thể hiển thị và/hoặc giải thích làm thế nào để làm điều này thay vì cung cấp một liên kết, nhưng hoặc là hữu ích.Android - Cách tạo chế độ xem danh sách có thể nhấp?

Đây là mã của tôi cho đến nay:

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

Đây là trong string.xml tôi

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

Đây là trong activity_main.xml tôi.

Tôi nên làm gì từ đây để làm cho mỗi mục trong danh sách của tôi có thể nhấp và có thể mở ra một trang mới?

Cảm ơn trước!

EDIT:

Logcat không còn liên quan.

Trả lời

29

Trong thực tế nó là khá dễ dàng:

Đây là hoạt động của bạn với ListView, nó thực hiện một 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); 
    } 

Sửa

Đoạn mã trên sẽ được đặt trong MainActivity.java của bạn. Tôi đã đổi tên của lớp thành MainActivity và contentView thành setContentView(R.layout.activity_main) - Các tên này là tên của một Dự án Android mới được tạo ra trong Eclipse.
Vui lòng xem thêm 2 dòng mới dưới // * Chỉnh sửa * - những người này sẽ đặt Trình nghe cho các nhấp chuột vào các mục trong danh sách.

activity_main.xml của bạn sẽ trông như thế này:

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

Các array.xml (không string.xml) trong `bạn res/values ​​/` thư mục trông như thế này

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

NB: Nếu bạn sao chép & dán mã này, nó sẽ hoạt động. Nhưng bạn sẽ gặp lỗi khi nhấp vào một mục vì bạn chưa tạo ListItemDetail.class.

Dưới đây là một ví dụ về cách này có thể xem xét:

ListItemDetail.java của bạn:

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


    } 

} 

Và activity_listitem.xml nó

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

Nếu bạn sao chép qua mã này nó sẽ làm việc.

+0

Tôi xin lỗi, tôi là người mới đến này. Tôi có thể đặt điều này trong tệp string.xml hoặc activity_main.xml và tôi có thể thay thế bất kỳ thứ gì trong thông tin này bằng thông tin của riêng mình không? –

+0

Tôi đã chỉnh sửa câu trả lời của mình. Hy vọng điều này sẽ giúp bạn đi đúng hướng :) – Delpes

+0

Được rồi, như bạn đã nói, nó cho tôi một lỗi, nhưng tôi đã thêm activity_listitem.xml và ListItemDetail.java và tôi không biết tại sao ứng dụng của FC, đặc biệt là vì tôi có không có lỗi. –

0

Bạn sử dụng chức năng onListItemClick để thiết lập Mục đích tải hoạt động tiếp theo và chuyển bất kỳ dữ liệu nào.

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

bạn có thể cư listview từ mảng trong string.xml như như thế này

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

và nhấp vào các mục listview là khá đơn giản và sử dụng dễ dàng method.just 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

ListView = (ListView) findViewById (R.id.listview);

  • List item

    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); 
         } 
        } 
    }); 
    
Các vấn đề liên quan