ArrayList没有更新

时间:2017-02-08 08:06:03

标签: android sqlite parsing arraylist

我尝试更新ArrayList以在我的SQLite数据库的Listview中显示它,但列表显示为空。 SQLite工作正常,因为数据显示在日志中但未添加到列表中。

我想补充的一点是,我还将此列表与Parse相关联,以便在线获取数据并将其保存在我的数据库中以实现离线可用性。

从Parse获取数据时,列表会更新。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_logged_in);


        myDB = openOrCreateDatabase("Users", MODE_PRIVATE, null);
        myDB.execSQL("CREATE TABLE IF NOT EXISTS user(title VARCHAR)");

        adapter = new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, titles);

        listView = (ListView) findViewById(R.id.listUsers);
        listView.setAdapter(adapter);


        listUpdater();

        titles.clear();

// After this the list is updated from Parse

}

以下是数据的方法调用

Control

2 个答案:

答案 0 :(得分:0)

我建议使用DWORD fx32_mul(DWORD x,DWORD y) // x=0x00123400 y=0x00230056 { const int _h=1; const int _l=0; union _u { DWORD u32; WORD u16[2]; }u; DWORD al,ah,bl,bh; DWORD c0,c1,c2,c3; // separate 2^16 base digits u.u32=x; al=u.u16[_l]; ah=u.u16[_h]; // al=0x3400 ah=0x0012 u.u32=y; bl=u.u16[_l]; bh=u.u16[_h]; // bl=0x0056 bh=0x0023 // multiplication (al+ah<<1)*(bl+bh<<1) = al*bl + al*bh<<1 + ah*bl<<1 + ah*bh<<2 c0=(al*bl); // c0=0x00117800 c1=(al*bh)+(ah*bl);// c1=0x0007220C c2=(ah*bh); // c2=0x00000276 c3= 0; // c3=0x00000000 // propagate 2^16 overflows (backward to avoid overflow) c3+=c2>>16; c2&=0x0000FFFF; // c3=0x00000000 c2=0x00000276 c2+=c1>>16; c1&=0x0000FFFF; // c2=0x0000027D c1=0x0000220C c1+=c0>>16; c0&=0x0000FFFF; // c1=0x0000221D c0=0x00007800 // propagate 2^16 overflows (normaly to recover from secondary overflow) c2+=c1>>16; c1&=0x0000FFFF; // c2=0x0000027D c1=0x0000221D c3+=c2>>16; c2&=0x0000FFFF; // c3=0x00000000 c2=0x0000027D // (c3,c2,c1,c0) >> _fx32_fract_bits u.u16[_l]=c0; u.u16[_h]=c1; c0=u.u32; // c0=0x221D7800 u.u16[_l]=c2; u.u16[_h]=c3; c1=u.u32; // c1=0x0000027D c0 =(c0&_fx32_integ_mask)>>_fx32_fract_bits; // c0=0x0000443A c0|=(c1&_fx32_fract_mask)<<_fx32_integ_bits; // c0=0x04FA443A return c0; // 0x04FA443A -> 83510330/32768 = 2548.53302001953125 } 来解决此问题。从AsyncTask中的数据库中获取数据,然后更新doInBackground()中的用户界面/列表。

有关更多信息或示例,请查看this

答案 1 :(得分:0)

首先..为什么在获取数据之前需要设置适配器。你可以这样做。

  1. 显示加载对话框。
  2. 从db或online / json
  3. 获取数据
  4. 解析它。
  5. 初始化适配器
  6. 将适配器设置为视图。
  7. 如果您需要更新列表。做一个notifyItemChanged(fromPos,list.size());
  8. 希望有所帮助