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.
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? –
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
Đượ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. –