国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

17開年第一篇Activity之間傳遞List<T> 以及T對象類型數據的方法

2019-11-09 14:50:08
字體:
來源:轉載
供稿:網友

現在轉眼都十三了,大家都工作了,自己確還沒有在家里閑得慌于是就做個App,誰知道就遇到了Activity間傳遞實例以及List<T>數據的問題。網上同類型的文章很多,我寫只是為了做個筆記預防忘記(其他的我覺得進入不了狀態,還是自己的思維好理解一些)。

廢話不多說下面正題。

要實現上面的需求有幾種方式:

1.定義全局靜態變量,由一個靜態變量集合類管理,至于安全方面,可以把控訪問方式,比如驗證訪問,不過相對來說感覺比較麻煩。

2. application中設置一個屬性,公開讀取。

3.使用Serializable序列化我們需要傳遞的數據,再通過Intent的putExtra(name,value);方法添加到Intent中,再接收活動中使用Intent的getSerializableExtra(name);方法獲取到相對應數據。

下面我們就試試第三種:

直接上代碼:

需要傳遞的數據的類定義需要修改,讓他有Serializable接口,才能實現數據的序列化

package winter.zxb.smilesb101.easysyrinx.Data.SyrinxInfo;import java.io.Serializable;import java.util.ArrayList;/** * 項目名稱:EasySyrinx * 類描述:希蕓物品信息類,接口后面的是關鍵我們需要這個接口才能讓數據序列化 * 創建人:SmileSB101 * 創建時間:2017/2/1 0001 22:29 * 修改人:Administrator * 修改時間:2017/2/1 0001 22:29 * 修改備注: */public class SyrinxItem implements Serializable{	/**	 * 用于進行鍵值對封裝時作為鍵	 */	public final static String NAME_STRING = "name";	public final static String CODE_STRING = "code";	public final static String KIND_STRING = "kind";	public final static String SERIES_STRING = "series";	public final static String IN_PRICE_STRING = "in_price";	public final static String OUT_PRICE_STRING = "out_price";	public final static String INTRODUCE_STRING = "introduce";	public final static String TAGLIST_STRING = "tagList";	public final static String FREEPOST_STRING = "freePost";	private String name;	private String code;	private String kind;	private String format;	private String series;	private float in_price;	private float out_price;	private String introduce;	private ArrayList<String> tagList;	private boolean freePost;	public SyrinxItem(){		this.tagList = new ArrayList<>();		this.in_price = 0;		this.out_price = 0;		freePost = false;	}	/**	 * 全參數構造方法	 * @param code 商品編號	 * @param name 商品名稱	 * @param kind 商品種類	 * @param format 商品規格	 * @param series 商品系列	 * @param in_price 商品	 * @param out_price 賣價	 * @param introduce 介紹	 * @param tagList 標簽列表	 * @param freePost 包郵	 */	public SyrinxItem(String code,String name,String kind,String format,String series,float in_price,float out_price,String introduce,ArrayList<String> tagList,boolean freePost){		this.code = code;		this.name = name;		this.kind = kind;		this.format = format;		this.series = series;		this.in_price = in_price;		this.out_price = out_price;		this.introduce = introduce;		this.tagList = tagList;		this.freePost = freePost;	}	public String getFormat(){		return format;	}	public void setFormat(String format){		this.format = format;	}	/**	 * 獲取是否包郵	 * @return	 */	public String isFreePost(){		return freePost?"包郵":"不包郵";	}	/**	 * 設置是否包郵	 * @param freePost	 */	public void setFreePost(boolean freePost){		this.freePost = freePost;	}	/**	 * 獲取系列名稱	 * @return	 */	public String getSeries(){		return series;	}	/**	 * 設置系列名稱	 * @param series	 */	public void setSeries(String series){		this.series = series;	}	/**	 * 獲取類型(商品顏色或者分類等)	 * @return	 */	public String getKind(){		return kind;	}	/**	 * 設置類型(商品顏色或者分類等)	 * @param kind	 */	public void setKind(String kind){		this.kind = kind;	}	/**	 * 獲取賣出價格	 * @return	 */	public float getOut_price(){		return out_price;	}	/**	 * 設置賣出價格	 * @param out_price	 */	public void setOut_price(float out_price){		this.out_price = out_price;	}	/**	 * 獲取物品名稱	 * @return 物品名稱	 */	public String getName(){		return name;	}	/**	 * 設置物品名稱	 * @param name 物品民稱	 */	public void setName(String name){		this.name = name;	}	/**	 * 獲取商品編號	 * @return 商品編號	 */	public String getCode(){		return code;	}	/**	 * 設置商品編號	 * @param code	 */	public void setCode(String code){		this.code = code;	}	/**	 * 獲取商品進價	 * @return	 */	public float getIn_price(){		return in_price;	}	/**	 * 設置商品進價	 * @param in_price	 */	public void setIn_price(float in_price){		this.in_price = in_price;	}	/**	 * 獲取商品介紹	 * @return	 */	public String getIntroduce(){		return introduce;	}	/**	 * 設置商品介紹	 * @param introduce	 */	public void setIntroduce(String introduce){		this.introduce = introduce;	}	/**	 * 獲取商品標簽(特性)	 * @return	 */	public ArrayList<String> getTagList(){		return tagList;	}	/**	 * 設置商品特性	 * @param tagList	 */	public void setTagList(ArrayList<String> tagList){		this.tagList = tagList;	}	/**	 * 設置商品特性	 * @param tag	 */	public void setTagList(String tag)	{		this.tagList.add(tag);	}	/**	 * 獲取此實例的json字符串	 * @return	 */	public String ToJsonString()	{		return "Syrinx ["+NAME_STRING+"="+getName()+","				+CODE_STRING+"="+getCode()+","				+KIND_STRING+"="+getKind()+","				+SERIES_STRING+"="+getSeries()+","				+IN_PRICE_STRING+"="+getIn_price()+","				+OUT_PRICE_STRING+"="+getOut_price()+","				+INTRODUCE_STRING+"="+getIntroduce()+","				+TAGLIST_STRING+"="+getTagList()+","				+freePost+"="+isFreePost()+"]";	}}

上一個活動中:

在這里list是ArrayList<SyrinxItem>();當然里面存儲了數據。series是另外一個序列化的單個對象。

Intent intent = new Intent(activity,SyrinxItemRecycleViewActivity.class);				intent.putExtra(SyrinxItemRecycleViewActivity.SYRINXLIST_VALUE,list);				intent.putExtra(SyrinxItemRecycleViewActivity.SYRINXSERIES_VALUE,series);				activity.startActivity(intent);

接收的活動中:

使用getIntet();獲取到Intent,然后通過Intent中的getSerializableExtra(name);方法來獲取到數據,注意強制類型轉換。

package winter.zxb.smilesb101.easysyrinx.UI.Activity;import android.content.Context;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;import java.util.ArrayList;import winter.zxb.smilesb101.easysyrinx.Data.SyrinxInfo.SyrinxItem;import winter.zxb.smilesb101.easysyrinx.Data.SyrinxInfo.SyrinxItemRecycleViewAdapter;import winter.zxb.smilesb101.easysyrinx.Data.SyrinxInfo.SyrinxSeries;import winter.zxb.smilesb101.easysyrinx.R;/** * 希蕓產品信息的展示活動 */public class SyrinxItemRecycleViewActivity extends AppCompatActivity{	public final static String SYRINXLIST_VALUE = "SYRINXLIST";	public final static String SYRINXSERIES_VALUE = "SYRINXSERIES";	private final static String TAG = "SyrinxItemActivity";	private View rootView;	private RecyclerView recyclerView;	private Context context;	private SyrinxItemRecycleViewAdapter itemRecycleViewAdapter;	private SyrinxSeries syrinxSeries;	private ArrayList<SyrinxItem> syrinxItems;	@Override	protected void onCreate(Bundle savedInstanceState){		super.onCreate(savedInstanceState);		setContentView(R.layout.syrinxitem_recycleview_layout);		Intent intent = getIntent();		syrinxItems = (ArrayList<SyrinxItem>)intent.getSerializableExtra(SYRINXLIST_VALUE);		syrinxSeries = (SyrinxSeries)intent.getSerializableExtra(SYRINXSERIES_VALUE);		recyclerView = (RecyclerView)findViewById(R.id.syrinxitem_layout_recycleView);		LinearLayoutManager layoutmanager = new LinearLayoutManager(this);		recyclerView.setLayoutManager(layoutmanager);		itemRecycleViewAdapter = new SyrinxItemRecycleViewAdapter(syrinxItems,this);		recyclerView.setAdapter(itemRecycleViewAdapter);		Log.i(TAG,"onCreate: huodongchuangjian");	}}下面上效果圖:

主活動中:(點擊任意一個item進入下個活動)

接收活動中:可以看到成功的接收到了來自上一個活動的List<T>以及單個對象的數據

總結:我們想要傳遞List<T>或者某個實例對象數據很簡單,只需要那個需要傳遞的實例定義時有接口Serializable,以及取數據的時候使用getSerializableExtra(name);方法就可以了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日照市| 合水县| 肥东县| 盐山县| 内乡县| 卢龙县| 泸水县| 靖州| 太谷县| 海门市| 潢川县| 林州市| 镇平县| 綦江县| 阿瓦提县| 塔城市| 夏河县| 娱乐| 时尚| 仲巴县| 莱州市| 鲜城| 铜梁县| 永善县| 文水县| 台中市| 城市| 斗六市| 阜阳市| 仁怀市| 高陵县| 桐梓县| 饶平县| 潢川县| 孙吴县| 札达县| 象山县| 辽中县| 都江堰市| 临朐县| 天峨县|