十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
data = new ArrayListInfo(); //存放数据的列表,以后只更新它就可以了
我们提供的服务有:网站制作、网站建设、微信公众号开发、网站优化、网站认证、塔河ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的塔河网站制作公司
adapter = new page_ListAdapter(this, data); //适配器,一个类,继承自BaseAdapter
listview.setAdapter(adapter); //列表视图上绑定适配器
以上几步就建立了数据与控件之间的关,以后更新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,就会触发onUpgrade,数据库就更新了,记得采纳
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数组元素会依次替换sql中的?占位符。实际上在执行更新操作时,sql语句已经被转换为了如下所示:
db.execSQL("update person set name=person.getName(),phone=person.getPhone(),amount=person.getAmount() where personid=person.getId()");
在android中先通过sqliteopenhelper建立数据库和表
然后用sqliteopenhelper对象去查询;
主要的两句代码如下:
sqliteopenhelper
helper=new
sqliteopenhelper();
helper.getwritabledatabase().execsql("select
score
form
s");
0、本质上是listview绑定Adapter,Adapter关联List,因此List变化后导致Adapter同步变化;再通过调用adapter.notifyDataSetChanged();方法使得listview界面自动更新。
操作:
1、ListString strName = new ArrayListString();//实际的数据源
2、Adapter adapter = new ArrayAdapterString(context,
R.layout.xmlforitem, strName);//适配器,其中 R.layout.xmlforitem是列表中每一项的布局,可以用默认的也可自建,strName则是将数据源绑定到适配器
3、listView.setAdapter(adapter);//将适配器绑定到列表显示控件ListView;
4、strName.add("TEST ONE");//增加一项,引起list变化,Adapter也随之变化;
5、adapter.notifyDataSetChanged();//调用notifyDataSetChanged();更新适配器,ListView会自动刷新,notifyDataSetChanged()方法可能需要在UI线程中调用,建议自行测试;
6、数据增加可能引起内存变化,需防内存溢出;
7、其他。
以上仅供参考,建议多搜索相关文档。
Fragment中的内容不是固定的,甚至布局都不是固定的,这时我们需要动态更新Fragment的数据或布局。所以本文将介绍更新Fragment数据的一种方法(可能不是最好的,如果大家有更好的方法一定要跟我说啊~)。
首先我们快速实现下“选项卡”切换效果。
注:为了简单起见,我们不加选项卡的标题。
步骤很简单,在activity布局中创建一个ViewPager节点,为ViewPager设置适配器(PagerAdapter),适配器产生数据填充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节点。
下面创建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都创建好之后,我们来写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方法中根据position直接new出Fragment对象.