data = new ArrayListInfo(); //存放數(shù)據(jù)的列表,以后只更新它就可以了
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、塔河ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的塔河網(wǎng)站制作公司
adapter = new page_ListAdapter(this, data); //適配器,一個(gè)類,繼承自BaseAdapter
listview.setAdapter(adapter); //列表視圖上綁定適配器
以上幾步就建立了數(shù)據(jù)與控件之間的關(guān),以后更新data就可以了,界面會(huì)自動(dòng)刷新。
附:適配器類在大體如下所示:
class page_ListAdapter extends BaseAdapter {
public page_ListAdapter(Activity context, ListInfo list) {
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//這里構(gòu)建每一行的界面
}
}
1、設(shè)置一個(gè)DB_VERSION
public?static?final?int?DB_VERSION?=?1;
2、當(dāng)你要更新表的時(shí)候就把DB_VERSION+1,就會(huì)觸發(fā)onUpgrade,數(shù)據(jù)庫就更新了,記得采納
public?DBHelper()?{
//?for?test
daoConfig?=?new?DbManager.DaoConfig()
.setDbName(DB_NAME)
.setDbVersion(DB_VERSION)
.setDbDir(Environment.getExternalStorageDirectory())
.setDbOpenListener(new?DbManager.DbOpenListener()?{
@Override
public?void?onDbOpened(DbManager?db)?{
db.getDatabase().enableWriteAheadLogging();
}
})
.setDbUpgradeListener(new?DbManager.DbUpgradeListener()?{
@Override
public?void?onUpgrade(DbManager?db,?int?oldVersion,?int?newVersion)?{
updateTable(db,?xx.class);
}
});
}
execSQL (String sql, Object[] bindArgs),其中bindArgs數(shù)組元素會(huì)依次替換sql中的?占位符。實(shí)際上在執(zhí)行更新操作時(shí),sql語句已經(jīng)被轉(zhuǎn)換為了如下所示:
db.execSQL("update person set name=person.getName(),phone=person.getPhone(),amount=person.getAmount() where personid=person.getId()");
在android中先通過sqliteopenhelper建立數(shù)據(jù)庫和表
然后用sqliteopenhelper對象去查詢;
主要的兩句代碼如下:
sqliteopenhelper
helper=new
sqliteopenhelper();
helper.getwritabledatabase().execsql("select
score
form
s");
0、本質(zhì)上是listview綁定Adapter,Adapter關(guān)聯(lián)List,因此List變化后導(dǎo)致Adapter同步變化;再通過調(diào)用adapter.notifyDataSetChanged();方法使得listview界面自動(dòng)更新。
操作:
1、ListString strName = new ArrayListString();//實(shí)際的數(shù)據(jù)源
2、Adapter adapter = new ArrayAdapterString(context,
R.layout.xmlforitem, strName);//適配器,其中 R.layout.xmlforitem是列表中每一項(xiàng)的布局,可以用默認(rèn)的也可自建,strName則是將數(shù)據(jù)源綁定到適配器
3、listView.setAdapter(adapter);//將適配器綁定到列表顯示控件ListView;
4、strName.add("TEST ONE");//增加一項(xiàng),引起list變化,Adapter也隨之變化;
5、adapter.notifyDataSetChanged();//調(diào)用notifyDataSetChanged();更新適配器,ListView會(huì)自動(dòng)刷新,notifyDataSetChanged()方法可能需要在UI線程中調(diào)用,建議自行測試;
6、數(shù)據(jù)增加可能引起內(nèi)存變化,需防內(nèi)存溢出;
7、其他。
以上僅供參考,建議多搜索相關(guān)文檔。
Fragment中的內(nèi)容不是固定的,甚至布局都不是固定的,這時(shí)我們需要?jiǎng)討B(tài)更新Fragment的數(shù)據(jù)或布局。所以本文將介紹更新Fragment數(shù)據(jù)的一種方法(可能不是最好的,如果大家有更好的方法一定要跟我說啊~)。
首先我們快速實(shí)現(xiàn)下“選項(xiàng)卡”切換效果。
注:為了簡單起見,我們不加選項(xiàng)卡的標(biāo)題。
步驟很簡單,在activity布局中創(chuàng)建一個(gè)ViewPager節(jié)點(diǎn),為ViewPager設(shè)置適配器(PagerAdapter),適配器產(chǎn)生數(shù)據(jù)填充ViewPager。
Activity布局:
LinearLayout xmlns:android=""
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" /
/LinearLayout
主界面只有一個(gè)ViewPager節(jié)點(diǎn)。
下面創(chuàng)建3個(gè)Fragment:
package com.example.viewpagerdemo2;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Tab3 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
return inflater.inflate(R.layout.tab3,null);
}
}
代碼很簡單,直接在oncreateView方法中使用布局填充器(LayoutInflater)填充一個(gè)View布局即可。
布局如下:
?xml version="1.0" encoding="utf-8"?
LinearLayout xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0000ff"
android:orientation="vertical"
TextView
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="我是第三個(gè)界面"
/
/LinearLayout
其他兩個(gè)Fragment跟這個(gè)一模一樣,這里就不貼了。
Fragment都創(chuàng)建好之后,我們來寫Activity的邏輯,我們需要為ViewPager指定一個(gè)PagerAdapter。
google為我們提供了方便的類叫FragmentPagerAdapter,我們只需繼承這個(gè)類并復(fù)寫getItem和getCount即可。
MainActivity如下:
package com.example.viewpagerdemo2;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity
{
private ViewPager vPager = null;
private static final int TAB_COUNT = 3;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vPager = (ViewPager) findViewById(R.id.viewpager);
vPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
}
public class MyPagerAdapter extends FragmentPagerAdapter
{
public MyPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position)
{
switch (position)
{
case 0:
return new Tab1();
case 1:
return new Tab2();
case 2:
return new Tab3();
}
return null;
}
@Override
public int getCount()
{
return TAB_COUNT;
}
}
}
代碼很簡單,就不過多解釋了。我在FragmentPagerAdapter的getItem方法中根據(jù)position直接new出Fragment對象.
網(wǎng)站標(biāo)題:android更新數(shù)據(jù),android增量更新和全量更新
標(biāo)題URL:http://m.rwnh.cn/article36/phghpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)