1

我正在为列表中的一行进行布局。其中一列包含“工作时间”,它从数据库中获取数据,分为两部分:开始和结束。我正在使用游标加载器将数据导入 UI。所以我的问题是,如果两个时间分开存储,将开始和结束的数据组合成 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);
}

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

4

1 回答 1

1

我认为将自定义 CursorAdapter 与 ViewHolder 一起使用会更好。

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;
    }
}
于 2013-08-01T15:55:53.363 回答