gpt4 book ai didi

java - 返回并绑定(bind)到 ListView 的 double 被截断

转载 作者:行者123 更新时间:2023-12-01 05:47:02 25 4
gpt4 key购买 nike

我正在查询我的 Android 应用程序的 sqlite 数据库。

然后,我使用一个简单的游标适配器将数据绑定(bind)到 ListView 。

有两个 double 被从数据库中调用,并且在 ListView 中唯一显示为 6 位数字长。

示例:43.6234-116.203

在数据库中(我转储了它)这些数字有更多的数字。

出了什么问题?这是 ListView 的行 XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/relativeLayout2" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:text="@string/ssid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/row_db_ssid" android:textSize="16dip"></TextView>
<TextView android:layout_height="wrap_content" android:layout_below="@+id/row_db_bssid" android:textSize="12dip" android:text="@string/lati" android:layout_width="wrap_content" android:id="@+id/row_db_latitude"></TextView>
<TextView android:text="@string/bssid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/row_db_bssid" android:layout_below="@+id/row_db_ssid" android:textSize="14dip"></TextView>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="@string/rssi" android:textSize="16dip" android:id="@+id/row_db_rssi"></TextView>
<TextView android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/row_db_bssid" android:textSize="12dip" android:text="@string/longi" android:layout_width="wrap_content" android:id="@+id/row_db_longitude"></TextView>
</RelativeLayout>

最佳答案

查看此处后:krysanify.wordpress.com/2010/11/24/…我在 SimpleCursorAdapter 中发现了一个缺陷,它只是假设字段将是失去所需精度的字符串

我扩展了 SimpleCursorAdapter 以在我想要的行上使用 Double ,这里是类。

public class WithLongAdapter extends SimpleCursorAdapter {
private int[] mFrom;
private int[] mTo;
/**
* SimpleCursorAdapter that also checks for Double values based on rows so they will not be truncated
* @param context pass this
* @param layout the row file
* @param c the Cursors
* @param from collums on cursor
* @param to rows on list
*/
public WithLongAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
mTo = to; //have to make my own to and from because they are protected in SimpleCursorAdapter
if (c != null) {
int i;
int count = from.length;
if (mFrom == null || mFrom.length != count) {
mFrom = new int[count];
}
for (i = 0; i < count; i++) {
mFrom[i] = c.getColumnIndexOrThrow(from[i]);
}
} else {
mFrom = null;
}
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
final ViewBinder binder = getViewBinder();
final int count = mTo.length;
final int[] from = mFrom;
final int[] to = mTo;

for (int i = 0; i < count; i++) {
final View v = view.findViewById(to[i]);
if (v != null) {
boolean bound = false;
if (binder != null) {
bound = binder.setViewValue(v, cursor, from[i]);
}

if (!bound) {
String text = cursor.getString(from[i]);
if (text == null) {
text = "";
} else if (R.id.row_db_latitude == v.getId()) { //added rows, if they are the ones I want get value of doulbe
text = String.valueOf(cursor.getDouble(from[i]));
}
else if (R.id.row_db_longitude == v.getId()) { //added row
text = String.valueOf(cursor.getDouble(from[i]));
}
if (v instanceof TextView) {
setViewText((TextView) v, text);
} else if (v instanceof ImageView) {
setViewImage((ImageView) v, text);
} else {
throw new IllegalStateException(
v.getClass().getName()
+ " is not a "
+ " view that can be bounds by this SimpleCursorAdapter");
}
}
}
}
}
}

关于java - 返回并绑定(bind)到 ListView 的 double 被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684319/

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