gpt4 book ai didi

android - 如何根据对象的字段设置列表项的不同顶行和底行?

转载 作者:行者123 更新时间:2023-11-29 21:05:25 26 4
gpt4 key购买 nike

我有一个名为 Vendible 的对象,它有一个 id 和一个 name(都是 String)。为了在不实际将几十个存储在内存中的情况下表示其中的几十个,我有一个名为 CondensedVendible 的类,它扩展了 Vendible 并添加了一个 count 变量(字节)。

目前,我正在像示例代码那样填充我的列表:

    setListAdapter(
new ArrayAdapter<Vendibles.Vendible>(
getActivity(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
Vendibles.ITEMS
)
);

不过,这只是用 CondensedVendible#toString() 的返回值填充每个列表项。相反,我希望它们看起来像:

[CondensedVendible#name]
[CondensedVendible#count] left

与大多数 Android 设置屏幕在每个列表项中都有一个设置名称和简短描述的方式大致相同。

我看过blogsother SO answers ,但我就是无法理解它们! 任何人都可以帮助我了解如何执行此操作吗?

更新


我想我很接近。这是我现在得到的:

Java

    setListAdapter(
new SimpleAdapter(
getActivity(),
Vendibles.toMapList(),
android.R.layout.two_line_list_item,
new String[] { Vendibles.MAP_NAME, Vendibles.MAP_COUNT },
new int[] { R.id.list_item_line_1, R.id.list_item_line_2 }
)
);

[meanwhile, in Vendibles.java...]

public static final String MAP_COUNT = "count", MAP_NAME = "name";
public static List<Map<String, String>> toMapList()
{
List<Map<String, String>> ret = new ArrayList<Map<String, String>>();
for(Vendible v : ITEMS) {
if (v == null) continue; // no use trying to process notyhing
Map<String, String> uselesslySmallMap = new HashMap<String, String>();
uselesslySmallMap.put(MAP_COUNT,
(v instanceof CondensedVendible
? ((CondensedVendible) v).count
: (byte)1
)+"" // safer than toString, shorter than String.valueOf
);
uselesslySmallMap.put(MAP_NAME, v.name);

ret.add(uselesslySmallMap);
}
return ret;
}

XML

<?xml version="1.0" encoding="utf-8"?>

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

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Line 1"
android:id="@+id/list_item_line_1"
android:textColor="@android:color/primary_text_dark" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Line 2"
android:id="@+id/list_item_line_2"
android:textColor="@android:color/secondary_text_dark" />
</LinearLayout>

但它现在呈现空白列表项!这不像我传递给它一个空列表,因为它有正确的数量,它们只是不显示任何文本! p>

最佳答案

您是否查看过您的 android sdk 中的 simple_list_item_activated_1.xml?下面是:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>

它是单个 TextView。如果您想要更复杂的自定义项目,那么您将需要提供自己的自定义项目布局和列表适配器。
快速 google 会提供许多关于如何实现您自己的自定义项目的教程: http://www.ezzylearning.com/tutorial.aspx?tid=1763429
http://hmkcode.com/android-custom-listview-items-row/
http://www.vogella.com/tutorials/AndroidListView/article.html
http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/
http://codehenge.net/blog/2011/05/customizing-android-listview-item-layout/
等等

关于android - 如何根据对象的字段设置列表项的不同顶行和底行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746911/

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