真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android鍵值對,安卓按鍵值

android中jsonobject和jsonobject的區(qū)別

1.JSONObject是Android原生的json類,通過import org.json.JSONObject來導(dǎo)入。

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的汕城網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

JsonObject需要添加gson jar包,通過com.google.gson.JsonObject來導(dǎo)入。

2.查看源碼,可以看到

JSONObject通過HashMap來保存鍵值對。

JsonObject使用LinkedTreeMap來保存鍵值對。

3.JSONObject:添加value為null的鍵值對,Map保存的時候會刪掉這一鍵值對;

JsonObject:添加value為null的鍵值對,Map會保留value值是null的鍵值對。

Android基礎(chǔ)知識

一、activity

1.一個activity就是一個類,繼承activity;

2.需要復(fù)寫onCreate()方法;

3.每一個activity都需要在AndroidMainfest.xml清單上進(jìn)行配置;

4.為activity添加必要的控件。

二、布局

線性布局:LinearLayout

1.填滿父空間:fill_parent、match_parent

2.文本多大空間就有多大:warp_content

3.文字對齊方式:gravity

4.占屏幕的比例:layout_weight="1" ?水平方向,則width=0,垂直方向,則height=0

5.一行顯示,空間不夠會省略:singleLine="ture"? false會換行

6.背景:background="#ffffff"

7.水平布局:orientation="horizontal"

垂直布局:orientation="vertivcal"

表格布局:TableLayout

1.內(nèi)邊距:padding

2.外邊距:marginLeft\Start、Right\End、Top、Bottom

三、RelativeLayout相對布局

layout_above 將該控件的底部置于給定ID控件之上

layout_below 將該控件的頂部置于給定ID控件之下

layout_toLeftOf 將該控件的右邊緣和給定ID控件的左邊緣對齊

layout_toRightOf 將該控件的左邊緣和給定ID控件的右邊緣對齊

layout_alignBaseline 該控件的baseline和給定ID的控件的Baseline對齊

layout_alignBottom 該控件的底部邊緣和給定ID的控件的底部邊緣對齊

layout_alignLeft 該控件的左邊緣和給定ID的控件的左邊緣對齊

layout_alignRight 該控件的右邊緣和給定ID的控件的右邊緣對齊

layout_alignTop 該控件的頂部邊緣和給定ID的控件的頂部邊緣對齊

layout_alignparentBottom 如果該值為true,則該控件的底部和父控件的底部對齊layout_alignParentLeft 如果該值為true,則該控件的左邊和父控件的左邊對齊

layout_alignParentRight 如果該值為true,則該控件的右邊和父控件的右邊對齊

layout_alignParentTop 如果該值為true,則該控件的上邊和父控件的上邊對齊

layout_centerHorizontal 如果該值為true,則該控件將被置于水平方向的中央

layout_centerInParent 如果該值為true,則該控件將被置于父控件水平和垂直方向的中央

layout_centerVertival 如果該值為true,則該控件將被置于垂直方向的中央

四、一個Intent對象包含一組信息

1.Component name

2.Action

3.Data

4.Category

5.Extras

6.Flags

Intent intent = new Intent(this, SecondActivity.class);

startActivity(intent);? //startActivity方法

intent.putExtra("Key", "Value");? //鍵值對

intent = getIntent();

String value = intent.getStringExtra("Key");? ? //通過鍵提取數(shù)據(jù)

五、初級控件:EditText、TextView、Button

1.獲取EditText的值

String value = EditText.getText().toString();

2.將值放到Intent對象中

Intent intent = new Intent();

intent.putExtra("one",value )

intent.setCalss(Activity.this, OtherActivity.class);

3.使用這個Intent對象來啟動Otheractivity

Activity.this.startActivity(intent);

4.將監(jiān)聽器的對象綁定到按鈕對象上

button.setOnclickListener(new Listener());

5.得到Intent對象當(dāng)中的值

Intent intent = getIntent();

String value1 = intent.getStringExtra("one");

int value2 = Integer.parseInt(value);

六、其他初級控件使用

①ImageView

②RadioGroup和RadioButton

setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener())

③Checkbox

setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener())

④Menu

1.當(dāng)客戶點(diǎn)擊MENU按鈕的時候,調(diào)用onCreateOptionMenu()方法

public boolean onCreateOptionMenu(Menu menu){

menu.add(0,1,1,R.string.id);

}

2.當(dāng)客戶點(diǎn)擊MENU內(nèi)部的具體某一個選項(xiàng)時,調(diào)用onOptionItemSelected()方法

public boolean onOptionItemSelected(MenuItem item){

if(item.getItemId() == 1){

finish();

}

return super.onOptionItemSelected(item);

}

七、Activity的生命周期

1.第一次創(chuàng)建時調(diào)用

protected void onCreat(Bundle saveInstanceState);

2.顯示出來時調(diào)用

protected void onStrat();

3.獲得用戶焦點(diǎn)時調(diào)用(可操作)

protected void onResume();

4.點(diǎn)擊彈出第二個Activity時調(diào)用

protected void onPause();

5.當(dāng)?shù)谝粋€Activity不可見時調(diào)用

protected void onStop();

6.當(dāng)返回第一個Activity時調(diào)用,代替OnCreate,因?yàn)闆]被銷毀

protected void onRestart();

7.當(dāng)返回第一個Activity時調(diào)用(先執(zhí)行onStop,在執(zhí)行,因?yàn)榈诙€Activity被銷毀,不能返回獲取,只能通過onCreat,onStart,onResume再創(chuàng)建)

protected void onDestory();

八、Task

1.Task是存放Activity的Stack棧。當(dāng)點(diǎn)擊啟動第二個Activiry時,第一個Activtiy會被壓入Stack棧當(dāng)中,第二個Activity會位于棧的頂部;當(dāng)返回第一個Activtiy時,第二個Activity會被彈出Stack,第一個Activity會位于棧的頂部,以此類推。

注釋:當(dāng)調(diào)用finish()時,當(dāng)前的Activity會被Destory掉,棧中的Activity會消失。

2.當(dāng)Activity都從Stack退出后,則就不存在Task。

九、高級控件

①進(jìn)度條ProgressBar

水平進(jìn)度條style="?android:attr/progressBarStyleHorizontal"

圓圈進(jìn)度條style="?android:attr/progressBarStyle"

用戶可視的visibility="gone"

②列表ListView

十、其他控件

A.下拉菜單Spinner

1.創(chuàng)建一個ArrayAdapter:

ArrayAdapterCharSequence adapter = ArrayAdapter.createFromResource(

this, //指上下文對象

R.array.plant_array, //引用了在文件中定義的String數(shù)組

android.R.layout.simple_spinner_item);//用來指定Spinner的樣式,可替換自定義

adapter.setDropDownViewResource(

android.R.layout.simple_spinner_dropdown_item);//設(shè)置Spinner當(dāng)中每個條目的樣式

2.得到Spinner對象,并設(shè)置數(shù)據(jù):

spinner=(spinner)findViewById(R.id.spinnerId);

spinner.setAdapter(adapter);

spinner.setPrompt("測試");//標(biāo)題

3.創(chuàng)建監(jiān)聽器

class SpinnerOnSelectListener implements OnItemSelectedListener{

@override

public void onItemSelected(

AdapterView? adapterView,//整個列表對象

View view,//被選中的具體條目對象

int position,//位置

long id){ //id

String selected = adapterView.getItemAtPosition(position).toString();

}

@override

public void onNothingSelected(AdapterView? adapterView){

S.o.p("nothingSelected");

}

}

4.綁定監(jiān)聽器

spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());

注:第二種動態(tài)設(shè)計

1.創(chuàng)建ArrayList對象

ListString list = new ArrayListString();

list.add("test1");

2. 調(diào)用方法

ArrayAdapter adapter = new ArrayAdapter(

this, //指上下文對象

R.layout.item, //引用了指定了下拉菜單的自定義布局文件

R.id.textViewId,//id

list);//數(shù)據(jù)

3.得到Spinner對象,并設(shè)置對象

spinner.setAdapter(adapter);

spinner.setPrompt("測試");//標(biāo)題

3.創(chuàng)建監(jiān)聽器

class SpinnerOnSelectListener implements OnItemSelectedListener{

@override

public void onItemSelected(

AdapterView? adapterView,//整個列表對象

View view,//被選中的具體條目對象

int position,//位置

long id){ //id

String selected = adapterView.getItemAtPosition(position).toString();

}

@override

public void onNothingSelected(AdapterView? adapterView){

S.o.p("nothingSelected");

}

}

4.綁定監(jiān)聽器

spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());

B.DatePicker和DatePickerDialog

1.聲明一個監(jiān)聽器,使用匿名內(nèi)部類

DatePickerDialog.OnDateSetListener onDateSetListener

= new DatePivkerDialog.OnDateSetListener(){

public void onDateSet(

DatePicker view,

int year,

int monthOfYear,

int dayOfMonth){

S.o.p(year+"-"+motnOfYear+"-"+dayOfMonth)

}

}

2.復(fù)寫onCreateDialog(int id)方法:

@override

protected Dialog onCreateDialog(int id){

switch(id){

case DATE_PICKER_ID:

return new DatePickerDialog(this,onDateSetListener,2019,11,25);

}

return null;

}

3.使用時調(diào)用showDialog()方法

showDialog(DATE_PICKER_ID);

C.AutoCompleteTextView

B.Widget

C.Animatin

十一、實(shí)現(xiàn)ContentProvider過程

1.定義一個CONTENT_URI常量

2.定義一個類,繼承ContentProvider

3.實(shí)現(xiàn)query、insert、update、delete、getType和onCreate方法

4.在AndroidManifest.xml當(dāng)中進(jìn)行聲明

android xml資源數(shù)組的問題 xml文件內(nèi)容如下,我要怎么獲取item鍵值對中name這個

假設(shè)準(zhǔn)備好的xml是

string-array name="names"

item shanghai/item

item beijing/item

item hongkong/item

/string-array

string-array name="values"

item 021/item

item 010/item

item 00852/item

/string-array

假設(shè)要獲得 "shanghai"對應(yīng)的值,可以參考以下函數(shù):

public String getAreaCode(String cityName) {

String[] names = getResources().getStringArray(R.array.names);

String[] values = getResources().getStringArray(R.array.values);

for (int i = 0; i names.length; i++) {

if (names[i].equals(cityName)) {

return values[i];

}

}

return null;

}

在android中簡單描述數(shù)據(jù)存儲的具體位置在哪里

數(shù)據(jù)存儲在開發(fā)中是使用最頻繁的,Android平臺主要有5種實(shí)現(xiàn)數(shù)據(jù)存儲的方式。

第1種: 使用SharedPreferences存儲數(shù)據(jù)

SharedPreferences是Android平臺上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態(tài),一般在Activity中 重載窗口狀態(tài)onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平臺常規(guī)的Long長 整形、Int整形、String字符串型的保存。

它的本質(zhì)是基于XML文件存儲key-value鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。

其存儲位置在/data/data/包名/shared_prefs目錄下。

SharedPreferences對象本身只能獲取數(shù)據(jù)而不支持存儲和修改,存儲修改是通過Editor對象實(shí)現(xiàn)。

實(shí)現(xiàn)SharedPreferences存儲的步驟如下:

一、根據(jù)Context獲取SharedPreferences對象

二、利用edit()方法獲取Editor對象。

三、通過Editor對象存儲key-value鍵值對數(shù)據(jù)。

四、通過commit()方法提交數(shù)據(jù)。

SharedPreferences對象與SQLite數(shù)據(jù)庫相比,免去了創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數(shù)據(jù)類型,比如其無法進(jìn)行條件查詢等。所以不論SharedPreferences的數(shù)據(jù)存儲操作是如何簡單,它也只能是存儲方式的一種補(bǔ)充,而無法完全替代如SQLite數(shù)據(jù)庫這樣的其他數(shù)據(jù)存儲方式。

Android開發(fā)中ArrayMap與HashMap有哪些不同

1、存儲方式不同

HashMap內(nèi)部有一個HashMapEntryK, V[]對象,每一個鍵值對都存儲在這個對象里,當(dāng)使用put方法添加鍵值對時,就會new一個HashMapEntry對象,具體實(shí)現(xiàn)如下:

[java] view plaincopy

@Override public V put(K key, V value) {

if (key == null) {

return putValueForNullKey(value);

}

int hash = secondaryHash(key);

HashMapEntryK, V[] tab = table;

int index = hash (tab.length - 1);

//先查找有沒有對應(yīng)的key值,如果有,就改寫value,并返回改寫前的value值:oldValue

for (HashMapEntryK, V e = tab[index]; e != null; e = e.next) {

if (e.hash == hash key.equals(e.key)) {

preModify(e);

V oldValue = e.value;

e.value = value;

return oldValue;

}

}

// No entry for (non-null) key is present; create one

modCount++;

if (size++ threshold) {

//擴(kuò)容,雙倍

tab = doubleCapacity();

index = hash (tab.length - 1);

}

addNewEntry(key, value, hash, index);

return null;

}

//創(chuàng)建對象存儲鍵值對

void addNewEntry(K key, V value, int hash, int index) {

table[index] = new HashMapEntryK, V(key, value, hash, table[index]);

}

ArrayMap的存儲中沒有Entry這個東西,他是由兩個數(shù)組來維護(hù)的

[java] view plaincopy

int[] mHashes;

Object[] mArray;

mHashes數(shù)組中保存的是每一項(xiàng)的HashCode值,mArray中就是鍵值對,每兩個元素代表一個鍵值對,前面保存key,后面的保存value,我們看看下面代碼的結(jié)果:

[java] view plaincopy

arraymap = new HashMapString, String();

a.put("a", "a_value");

a.put("b", "b_value");

執(zhí)行上面代碼后,arraymap中的存儲是這樣的

是不是能清楚地看到ArrayMap的存儲了,這種存儲在put代碼中如下:

[java] view plaincopy

mHashes[index] = hash;

mArray[index1] = key;

mArray[(index1)+1] = value;

2、添加數(shù)據(jù)時擴(kuò)容時的處理不一樣

先來看看HashMap

[java] view plaincopy

if (size++ threshold) {

tab = doubleCapacity();

index = hash (tab.length - 1);

}

doubleCapacity進(jìn)行雙倍擴(kuò)容,它的代碼中有這么一句話

[java] view plaincopy

HashMapEntryK, V[] newTable = makeTable(newCapacity);

最終,這個newTable將作為擴(kuò)容后的新對象返回,那么makeTable做了什么呢,如下:

[java] view plaincopy

private HashMapEntryK, V[] makeTable(int newCapacity) {

@SuppressWarnings("unchecked") HashMapEntryK, V[] newTable

= (HashMapEntryK, V[]) new HashMapEntry[newCapacity];

table = newTable;

threshold = (newCapacity 1) + (newCapacity 2); // 3/4 capacity

return newTable;

}

我們清楚地看到,這里進(jìn)行了new操作,重新創(chuàng)建對象,開銷很大。

那么ArrayMap呢,看看:

[java] view plaincopy

//如果容量不夠

ize = mHashes.length) {

final int n = mSize = (BASE_SIZE*2) ? (mSize+(mSize1))

: (mSize = BASE_SIZE ? (BASE_SIZE*2) : BASE_SIZE);

if (DEBUG) Log.d(TAG, "put: grow from " + mHashes.length + " to " + n);

final int[] ohashes = mHashes;

final Object[] oarray = mArray;

//分配數(shù)組

allocArrays(n);

if (mHashes.length 0) {

if (DEBUG) Log.d(TAG, "put: copy 0-" + mSize + " to 0");

//特別注意這,是copy,而不是new,效率提升

System.arraycopy(ohashes, 0, mHashes, 0, ohashes.length);

System.arraycopy(oarray, 0, mArray, 0, oarray.length);

}

//釋放無用空間,收縮數(shù)組

freeArrays(ohashes, oarray, mSize);

}

ArrayMap用的是copy數(shù)據(jù),所以效率相對要高。

3、ArrayMap提供了數(shù)組收縮的功能,在clear或remove后,會重新收縮數(shù)組,是否空間

4、ArrayMap采用二分法查找;

以上就是android開發(fā)中,HashMap與ArrayMap的區(qū)別,大家在涉及到內(nèi)存方面的實(shí)現(xiàn),可根據(jù)實(shí)際情況選擇這兩種不同的方式。

Android里不是鍵值對格式的JSON怎么解析

舉個實(shí)例:

[

["5","\u9760\u7a97",false,true,

[

["2","1h",false,false],

["3","2h",true,true],

["4","3h",false,false],

["5","4h",false,false],

["6","5h",false,false]]],

["4","\u65e7\u91d1\u5c71",false,false,

[

["1","\u65e7\u91d1\u5c71",false,false]

]

]

]

這樣的JSON數(shù)據(jù)不是鍵值對的格式

解決方法 : public static void downAreaTable(JsonArray jsonData) {PadUtil.areaTables = null;JsonArray array2;JsonArray array3;JsonArray array4;int len = jsonData.getAsJsonArray().size();if (len 0) {areaTables = new HashMapTable, Area();for (int i = 0; i len; i++) {array2 = jsonData.getAsJsonArray().get(i).getAsJsonArray();Area area = new Area(Integer.parseInt(array2.get(0).getAsString()), array2.get(1).getAsString(), array2.get(1).getAsString(), array2.get(2).getAsBoolean()); array3 = array2.get(4).getAsJsonArray(); for (int j = 0; j array3.size(); j++) {array4 = array3.get(j).getAsJsonArray();Table table = new Table(Integer.parseInt(array4.get(0).getAsString()), array4.get(1).getAsString(),array4.get(1).getAsString(), area, array4.get(2).getAsBoolean());areaTables.put(table, area);}}}}


網(wǎng)頁名稱:android鍵值對,安卓按鍵值
文章出自:http://weahome.cn/article/hooidp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部