试图避免多个布局级别

时间:2013-08-01 15:06:14

标签: android android-linearlayout

我正在为列表中的行进行布局。其中一列包含“工作时间”,它将数据库中的数据分为两部分:开始和结束。我正在使用游标加载器将数据导入UI。所以我的问题是,如果2次单独存储,将开始和结束的数据组合成12:00~4:00的格式的最佳方法是什么?我考虑过另外一个线性布局,但这似乎是浪费。有什么建议吗?

编辑:

这是我的Loader回调,我认为非常标准。

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    String[] projection = Columns.getColumns(RawContract.PARAM_SIWORKDAYS);

    CursorLoader cursorLoader = new CursorLoader(mContext,
            BidProvider.CONTENT_URI_SIWORKDAYS, projection, null, null, null);
    return cursorLoader;
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    mAdapter.swapCursor(data);
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    mAdapter.swapCursor(null);
}

我正在使用它

private void fillData() {

    String[] from = new String[] { Columns.COLUMN_WORKDATE,
            Columns.COLUMN_DAYCHARGE, Columns.COLUMN_TEMPERATURE,
            Columns.COLUMN_WORKFROMHR, Columns.COLUMN_WORKTOHR,
            Columns.COLUMN_WEATHER, Columns.COLUMN_CREATEDBY,
            Columns.COLUMN_CREATEDDATE };
    int[] to = new int[] { R.id.contractor, R.id.contract_num, R.id.title,
            R.id.value, R.id.status, R.id.dept_name, R.id.start, R.id.close };

    getLoaderManager().initLoader(0, null, this);

    mAdapter = new SimpleCursorAdapter(mContext, R.layout.contract_row, null, from,
            to, 0);

    setListAdapter(mAdapter);
}

所以我想我得到的是我从不手动从光标中提取数据,所以我不确定将这两个数据放在一起的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

我认为最好在ViewHolder中使用自定义CursorAdapter。

private static class MyCursorAdapter extends CursorAdapter {
    private final Context context;
    private final LayoutInflater layoutInflater;

    public MyCursorAdapter(Context context, Cursor c, boolean autoRequery) {
        super(context, c, autoRequery);
        this.context = context;
        this.layoutInflater = (LayoutInflater) context.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        ViewHolder holder = new ViewHolder();
        View v = layoutInflater.inflate(R.layout.my_list_item, parent, false);
        holder.startFinishTimeView = (TextView) v.findViewById(R.id.startFinishTimeView);
        holder.content = v.findViewById(R.id.content);
        v.setTag(holder);
        return v;
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        ViewHolder holder = (ViewHolder) view.getTag();
        holder.startFinishTimeView.setText(<past here your formated time from Cursor>);
    }

    private static class ViewHolder {
        TextView startFinishTimeView;
        View content;
    }
}
相关问题