Estudio de Android: pasar datos de lista entre dos actividades

Prólogo: generalmente pasa datos int o string, esta vez necesita pasar datos de lista, registrar el método

Al principio, se usaba Bundle para transferir, hay muchos tutoriales en Internet para este método, así que no lo escribiré. Al principio funcionó correctamente y efectivamente se pudo entregar, pero cuando lo volví a abrir después de unos días, fallaba después de modificar los datos. Así que cambié el método.

Referencia: Transferir datos de Lista entre Actividades

Registre el método y el código de muestra. El código de muestra se encuentra en el artículo vinculado anteriormente
1. Cree un Bean de clase de entidad, y el Bean debe implementar Serializable:

package com.example.intentlist;
 
import java.io.Serializable;
 
public class Bean implements Serializable {
	private int id;
	private String name;
	private int age;
 
	public Bean() {
 
	}
 
	public Bean(int id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}
 
	public int getId() {
		return id;
	}
 
	public void setId(int id) {
		this.id = id;
	}
 
	public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public int getAge() {
		return age;
	}
 
	public void setAge(int age) {
		this.age = age;
	}
 
}

2. Actividad a transferir:

package com.example.intentlist;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class MainActivity extends ActionBarActivity {
	List<Bean> lstBean;
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
 
		lstBean = new ArrayList<Bean>();
		Bean bean = new Bean(1, "张三", 12);
		lstBean.add(bean);
		Bean bean1 = new Bean(2, "李四", 13);
		lstBean.add(bean1);
		Bean bean2 = new Bean(3, "王五", 14);
		lstBean.add(bean2);
		Bean bean3 = new Bean(4, "赵六", 15);
		lstBean.add(bean3);
		((Button) findViewById(R.id.btn_next)).setOnClickListener(new OnClickListener() {
 
			@Override
			public void onClick(View arg0) {
				Intent intentPut = new Intent(MainActivity.this, IntentTestActivity.class);
				intentPut.putExtra("lstBean", (Serializable) lstBean);
				startActivity(intentPut);
			}
		});
 
	}
}

3. Actividad que recibe la lista:

package com.example.intentlist;
 
import java.util.List;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;
 
public class IntentTestActivity extends ActionBarActivity {
 
	@SuppressWarnings("unchecked")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_intent_test);
		Intent intentGet = getIntent();
		List<Bean> lstBean = (List<Bean>) intentGet.getSerializableExtra("lstBean");
		String result = "IntentTestActivity" + "\n";
		for (Bean bean : lstBean) {
			result += bean.getId() + "---" + bean.getName() + "---" + bean.getAge() + "\n";
		}
 
		((TextView) findViewById(R.id.tv_result)).setText(result);
	}
}

Supongo que te gusta

Origin blog.csdn.net/zzzzzwbetter/article/details/130057516
Recomendado
Clasificación