</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后,返回第一个界面并弹出所选择项