美文网首页
CriminalIntent项目总结之12~14章

CriminalIntent项目总结之12~14章

作者: Tenaron | 来源:发表于2017-10-13 21:07 被阅读0次
  • 新式对话框(AlertDialog类)
  • 实现层级式导航
  • SQLite数据库
  • 使用CursorWrapper

新式对话框——AlertDialog

AlertDialog类封装在DialogFragment类中

使用FregmentManager管理对话框可以更灵活的显示对话框。其次,旋转设备时,单独的AlertDialog会消失,而封装起来的对话框会重建恢复。


fragment间的数据传递

实现同一个activity托管的两个fragment之间的数据传递


实现层级式导航

主要是可以在应用内逐级向上导航。

启用向上按钮

<activity
            android:name=".CrimePagerActivity"
            android:parentActivityName=".CrimeListActivity"/>

切换菜单项标题

工具栏上的子标题显示后,菜单项标题依然显示为SHOW SUBTITLE。我们需要调用onOptionsItemSelected(MenuItem)从而更新SHOW SUBTITLE里的文字。

SQLite数据库

使用ContentValues

是负责处理数据库写入和更新操作的辅助类。它是一个键值存储类,类似于Java的HashMap和前面用过的Bundle。不同的是,ContentValues只能用于处理SQLite数据。

创建ContentValues

private  static ContentValues getContentValues(Crime crime) {
        ContentValues values = new ContentValues();
        values.put(CrimeTable.Cols.UUID,crime.getId().toString());
        values.put(CrimeTable.Cols.TITLE,crime.getTitle());
        values.put(CrimeTable.Cols.DATE,crime.getDate().toString());
        values.put(CrimeTable.Cols.SOLVED,crime.isSolved()?1:0);
        values.put(CrimeTable.Cols.SUSPECT,crime.getSuspect());

        return values;
    }

插入和更新记录


    public void addCrime(Crime c) {
        ContentValues values = getContentValues(c);
        mDataBase.insert(CrimeTable.NAME,null,values);
    }
    
    public void updateCrime(Crime crime) {
        String uuidString = crime.getId().toString();
        ContentValues values = getContentValues(crime);
        mDataBase.update(CrimeTable.NAME,values,
                CrimeTable.Cols.UUID+" = ?",
                new String[] { uuidString });
    }

刷新Crime数据

onPause()方法中刷新列表项

@Override
    public void onPause() {
        super.onPause();

        CrimeLab.get(getActivity())
                .updateCrime(mCrime);
    }

使用CursorWrapper

功能就是封装数据表中的原始字段值。

创建模型对象

private CrimeCursorWrapper queryCrimes(String whereClause,String[] whereArgs) {
        Cursor cursor = mDataBase.query(CrimeTable.NAME,null,whereClause,whereArgs,null,null,null);
        return new CrimeCursorWrapper(cursor);
    }
    
public List<Crime> getCrimes() {
        List<Crime> crimes = new ArrayList<>();

        CrimeCursorWrapper cursor = queryCrimes(null,null);

        try{
            cursor.moveToFirst();
            while(!cursor.isAfterLast()) {
                crimes.add(cursor.getCrime());
                cursor.moveToNext();
            }
        }finally {
            cursor.close();
        }
        return crimes;
    }
    
 public Crime getCrime(UUID id) {
        CrimeCursorWrapper cursor = queryCrimes(
                CrimeTable.Cols.UUID+" =? ",
                new String[] { id.toString() });
        try{
            if (cursor.getCount() == 0) {
                return null;
            }
            cursor.moveToFirst();
            return cursor.getCrime();
        }finally {
            cursor.close();
        }
    }

相关文章

网友评论

      本文标题:CriminalIntent项目总结之12~14章

      本文链接:https://www.haomeiwen.com/subject/qxstuxtx.html