data = new ArrayListInfo(); //存放數(shù)據(jù)的列表,以后只更新它就可以了
我們提供的服務有:網站制作、網站建設、微信公眾號開發(fā)、網站優(yōu)化、網站認證、塔河ssl等。為成百上千企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的塔河網站制作公司
adapter = new page_ListAdapter(this, data); //適配器,一個類,繼承自BaseAdapter
listview.setAdapter(adapter); //列表視圖上綁定適配器
以上幾步就建立了數(shù)據(jù)與控件之間的關,以后更新data就可以了,界面會自動刷新。
附:適配器類在大體如下所示:
class page_ListAdapter extends BaseAdapter {
public page_ListAdapter(Activity context, ListInfo list) {
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//這里構建每一行的界面
}
}
1、設置一個DB_VERSION
public?static?final?int?DB_VERSION?=?1;
2、當你要更新表的時候就把DB_VERSION+1,就會觸發(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ù)組元素會依次替換sql中的?占位符。實際上在執(zhí)行更新操作時,sql語句已經被轉換為了如下所示:
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、本質上是listview綁定Adapter,Adapter關聯(lián)List,因此List變化后導致Adapter同步變化;再通過調用adapter.notifyDataSetChanged();方法使得listview界面自動更新。
操作:
1、ListString strName = new ArrayListString();//實際的數(shù)據(jù)源
2、Adapter adapter = new ArrayAdapterString(context,
R.layout.xmlforitem, strName);//適配器,其中 R.layout.xmlforitem是列表中每一項的布局,可以用默認的也可自建,strName則是將數(shù)據(jù)源綁定到適配器
3、listView.setAdapter(adapter);//將適配器綁定到列表顯示控件ListView;
4、strName.add("TEST ONE");//增加一項,引起list變化,Adapter也隨之變化;
5、adapter.notifyDataSetChanged();//調用notifyDataSetChanged();更新適配器,ListView會自動刷新,notifyDataSetChanged()方法可能需要在UI線程中調用,建議自行測試;
6、數(shù)據(jù)增加可能引起內存變化,需防內存溢出;
7、其他。
以上僅供參考,建議多搜索相關文檔。
Fragment中的內容不是固定的,甚至布局都不是固定的,這時我們需要動態(tài)更新Fragment的數(shù)據(jù)或布局。所以本文將介紹更新Fragment數(shù)據(jù)的一種方法(可能不是最好的,如果大家有更好的方法一定要跟我說啊~)。
首先我們快速實現(xiàn)下“選項卡”切換效果。
注:為了簡單起見,我們不加選項卡的標題。
步驟很簡單,在activity布局中創(chuàng)建一個ViewPager節(jié)點,為ViewPager設置適配器(PagerAdapter),適配器產生數(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
主界面只有一個ViewPager節(jié)點。
下面創(chuàng)建3個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)填充一個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="我是第三個界面"
/
/LinearLayout
其他兩個Fragment跟這個一模一樣,這里就不貼了。
Fragment都創(chuàng)建好之后,我們來寫Activity的邏輯,我們需要為ViewPager指定一個PagerAdapter。
google為我們提供了方便的類叫FragmentPagerAdapter,我們只需繼承這個類并復寫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對象.