天天看點

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互相資料傳遞的實作方法