gpt4 book ai didi

android - ListActivity:在将数据放入行之前更改来自 SQLite 的数据

转载 作者:太空狗 更新时间:2023-10-29 12:58:54 26 4
gpt4 key购买 nike

这是我的 ListActivity:

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

mDbHelper = new MyDbAdapter(this);
mDbHelper.open();
fillData();

registerForContextMenu(getListView());
}

private void fillData() {
// Get all of the rows from the database and create the item list
Cursor c = mDbHelper.fetchAllTransactions();
startManagingCursor(c);

// Create an array to specify the fields we want to display in the list
String[] from = new String[]{MyDbAdapter.KEY_DATE, MyDbAdapter.KEY_NAME};

// and an array of the fields we want to bind those fields to
int[] to = new int[]{R.id.row_date, R.id.row_name};

// Now create a simple cursor adapter and set it to display
setListAdapter(new SimpleCursorAdapter(this, R.layout.my_list_row, c, from, to));
}

这是我的行布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/row_date" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<TextView android:id="@+id/row_name" android:layout_width="wrap_content" android:layout_height="fill_parent" />
</LinearLayout>

日期在 SQLLite 数据库中实际存储为一个 int,因此它显示为一个整数。

有谁知道从 int 中创建日期的方法,这样它就不会显示为 1216544611(或其他),而是显示为 "12/11/2009 11:32"?

最佳答案

我怀疑您需要编写自己的 CursorAdapter 将 int 格式化为日期字符串。诀窍是实现 bindView() 以在列表项显示之前对其进行格式化:

private final class MyCursorAdapter extends CursorAdapter {
MyCursorAdapter(Context context, Cursor c) {
super(context, c);
}

@Override public void bindView(View view, Context context, Cursor cursor) {

// Format the date string
TextView dateView = (TextView) view.findViewById(R.id.row_date);
long millis = cursor.getLong(cursor.getColumnIndex(MyDbAdapter.KEY_DATE));
dateView.setText(DateFormat.getDateInstance().format(new Date(milis)));

// Do the rest of your view formatting
...
}

@Override View public newView(Context context, Cursor cursor, ViewGroup parent) {
View view = getLayoutInflater().inflate(R.layout.my_list_row, null);
bindView(view, context, cursor);
return view;
}
}

并将它连接到 onCreate() 中的 Activity:

setListAdapter(new MyCursorAdapter(this, c));

关于android - ListActivity:在将数据放入行之前更改来自 SQLite 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com