PLZ嘗試此樣品其具有一個主活性,即ListActivity和點擊的項目子活性,即活動顯示了其細節
主要活動類「listActivity」是
package edu.android.clickablelist;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.app.ListActivity;
import android.content.Intent;
public class listActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create an array of Strings, that will be put to our ListActivity
String[] names = new String[] {"Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone"};
// Create an ArrayAdapter, that will actually make the Strings above
// appear in the ListView
this.setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_checked, names));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Get the item that was clicked
Object o = this.getListAdapter().getItem(position);
final String keyword = o.toString();
Bundle b = new Bundle();
b.putString("Test", keyword);
Intent i = new Intent(listActivity.this,
DetailsActivity.class);
i.putExtras(b);
startActivityForResult(i,0);
}
}
和子活動是作爲
package edu.android.clickablelist;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.*;
public class DetailsActivity extends Activity
{
TextView tv;
private static final int SUB_ACTIVITY_REQUEST_CODE = 0;
@Override
public void onCreate(Bundle Savedinstances)
{
super.onCreate(Savedinstances);
setContentView(R.layout.details);
//for getting parameters passed from listActivity.java
Bundle b = this.getIntent().getExtras();
String selItem = b.getString("Test");
//how to set text of selected item?
tv = (TextView) findViewById(R.id.SelectedItem);
tv.setText("You are viewing Details of " + selItem);
Button btn = (Button) findViewById(R.id.btnClick2);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
setResult(RESULT_OK);
finish();
}
});
}
//this is important to get result of StartActivityForResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SUB_ACTIVITY_REQUEST_CODE){
Bundle b = data.getExtras();
tv.setText(b.getString("Test"));
}
}
}
您還需要在 「AndroidManifest.xml中」 添加子活動的參考
對於上面的代碼示例XML是
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.android.clickablelist"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".listActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailsActivity"
class=".DetailsActivity"
android:label="DetailsActivity">
</activity>
</application>
</manifest>
希望這將有助於
所以我應該做的,如果我想在列表的特定行onclick事件? – shripal 2011-04-08 06:41:57
在該行上設置了一個新的OnClickListener()。 – 2011-04-08 06:42:53
嘗試'context.startActivity' – pankajagarwal 2011-04-08 06:43:39