</pre><span style="font-size:24px">需要實作ListActivity雙向資料傳遞,在網上查了一下資料,發現網上的總結大部分都是講述的單向資料的傳送,是以将我的方法貼出來僅供參考。</span><p></p><p><span style="font-size:24px">先做一個十分簡單的界面</span></p><p><span style="font-size:24px"><img src="https://img-blog.csdn.net/20131111144909359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhnMTkwMjIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></p><p><span style="font-size:24px">代碼如下:</span></p><p></p><pre code_snippet_id="69529" snippet_file_name="blog_20131113_1" name="code" class="java"><span style="font-size:18px">package com.example.maintest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent nameIntent=new Intent(MainActivity.this,MyListCiew.class);
int n=10;
nameIntent.putExtra("num",String.valueOf(n));
for(int i=0;i<n;i++)
{
nameIntent.putExtra("itemTitle"+String.valueOf(i), "This Is Title "+i);
}
startActivityForResult(nameIntent, 0);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode==0&&resultCode==1)
{
Bundle data=intent.getExtras();
String n=data.getString("numb");
Toast.makeText(getApplicationContext(), "你選擇了第"+n+"個Title",
Toast.LENGTH_SHORT).show();
}
}
}</span><span style="font-size:24px">
</span>
選擇按鈕後,進入list清單,此處直接繼承listactivity,界面也選擇自帶的simple_list_item_1

代碼如下:
<span style="font-size:18px">package com.example.maintest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MyListCiew extends ListActivity {
private String record;
private ListView listView;
protected void onCreate(Bundle savedInstanceState)
{
// TODO 自動生成的方法存根
super.onCreate(savedInstanceState);
listView = new ListView(this);
listView.setId(android.R.id.list);
setContentView(listView);
Intent intent=getIntent();
record=intent.getStringExtra("num");
int n=Byte.parseByte( record );
String [] result=new String[n];
for(int i=0;i<n;i++)
{
result[i]=intent.getStringExtra("Title"+String.valueOf(i));
}
for(int i=0;i<n;i++)
{
result[i]=intent.getStringExtra("itemTitle"+String.valueOf(i));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,result);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Bundle data=new Bundle();
data.putString("numb",String.valueOf(arg2));
Intent intent=getIntent();
intent.putExtras(data);
MyListCiew.this.setResult(1,intent);
MyListCiew.this.finish();
}
});
}
}</span>
選擇一個Item後,傳回第一個界面并彈出所選擇項