gpt4 book ai didi

java - 在 Android API 10 和 API 23 上显示 SQLite 数据的不同结果

转载 作者:太空宇宙 更新时间:2023-11-04 12:33:55 25 4
gpt4 key购买 nike

我正在 Android 应用程序中访问本地 SQLite 数据库以获取鸟类名称列表,然后将它们显示在 ListView 中。我正在使用 SQLiteAssetHelper 访问本地存储的数据库。

<小时/>

在测试时我注意到不同的设备会给出不同的结果。

  • 在 Samsung GT-I9001(Android 2.3.3,API 10)上,一切都会显示正确。
  • 在装有较新 Android 版本的设备上进行测试(三星 E5823(Android 6.0,API 23)和模拟器 Nexus 5 API 23)不所有数据均正确显示

(屏幕截图中显示的示例)

Samsung E5823 not displaying full title

Samsung GT-I9001 displaying everything correctly

<小时/>

这是我从数据库获取数据的代码。

 public List<Specie> getNames() {
List<Specie> list = new ArrayList<>();

Cursor cursor = database.rawQuery("SELECT * FROM " + TABLE_NAME + " ORDER BY LATIN ASC", null);
cursor.moveToFirst();

while (!cursor.isAfterLast()) {

String nameLT = cursor.getString(1); // this sometimes displayed not correctly
String nameLOT = cursor.getString(2); //this is displayed corretly

list.add(new Specie(R.drawable.ic_bird, nameLT, nameLOT));
cursor.moveToNext();
}
cursor.close();
return list;
}
<小时/>

这是将数据放入列表的数组适配器代码。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
SpecieHolder holder = null;

if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new SpecieHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.icon);
holder.txtTitle1 = (TextView)row.findViewById(R.id.firstLine);
holder.txtTitle2 = (TextView)row.findViewById(R.id.secondLine);
row.setTag(holder);
}
else
{
holder = (SpecieHolder)row.getTag();
}
Specie specie = data.get(position);
holder.txtTitle1.setText(specie.titleLT);
holder.txtTitle2.setText(specie.titleLOT);
setImage(holder.imgIcon, specie.titleLOT);

return row;
}
static class SpecieHolder
{
ImageView imgIcon;
TextView txtTitle1;
TextView txtTitle2;
}
<小时/>

list_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<ImageView
android:id="@+id/icon"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_marginTop="6dip"
android:layout_marginLeft="6dip"
android:layout_marginRight="6dip"
android:src="@mipmap/ic_launcher"/>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_toRightOf="@id/icon"
android:paddingTop="15dp">

<TextView
android:id="@+id/firstLine"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="Example application"
android:textSize="20sp" />
<TextView
android:id="@+id/secondLine"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="Description"
android:textSize="12sp" />

</LinearLayout>
<小时/>

什么可能导致不同设备之间存在差异?如何解决这个问题?

(抱歉,如果我没有发布解决问题所需的所有内容,如果需要,我会添加)

最佳答案

显然问题不在于数据库,而在于设计。

list_item.xml中的 TextView 宽度设置为fill_parent,并更改为wrap_content,解决了问题。

关于java - 在 Android API 10 和 API 23 上显示 SQLite 数据的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541006/

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