天天看点

android ListActivity或listview相互数据传递的实现方法

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

android ListActivity或listview相互数据传递的实现方法

代码如下:

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

android ListActivity或listview相互数据传递的实现方法