我正在为列表中的行进行布局。其中一列包含“工作时间”,它将数据库中的数据分为两部分:开始和结束。我正在使用游标加载器将数据导入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);
}
所以我想我得到的是我从不手动从光标中提取数据,所以我不确定将这两个数据放在一起的最佳方法是什么。
答案 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;
}
}