gpt4 book ai didi

android - 如何将 ImageView 数组添加到 ListView 的 ArrayAdapter

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

我有一个自定义的行布局,其中包含用于 ListView 的 Imageview 和 TextView。我可以将表示每一行的字符串数组添加到 ArrayAdater,但在填充行 ImageView 时遇到问题。

我尝试创建一个 ImageView 数组并按如下方式添加到 ArrayAdaptor(因为我看不到将两个数组作为参数的 ArrayAdpter 构造函数):

// a string array holding the list items
String classes[] = { "My Profile", "Splash", "Log A Dive", "Search Dives",
"Weather: Magic Seaweed", "Irish Tides", "International Tides", "Dive PLanner" };// each class is a menu Actiitem

ImageView images[]={(ImageView) findViewById(R.drawable.logdive),(ImageView) findViewById(R.drawable.logdive2),
(ImageView) findViewById(R.drawable.logdive3),
(ImageView) findViewById(R.drawable.search),(ImageView) findViewById(R.drawable.weather),
(ImageView) findViewById(R.drawable.tides),(ImageView) findViewById(R.drawable.tides)
,(ImageView) findViewById(R.drawable.logdive3)};

ArrayAdapter listadaptor = new ArrayAdapter<String>(MainMenu.this,
R.layout.single_list_row, R.id.title, classes);
listadaptor.add(images);
setListAdapter(cutsomAdaptor);

Logcat 堆栈跟踪:

01-02 05:10:45.480: E/AndroidRuntime(891): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mooney.diveapp/com.mooney.diveapp.MainMenu}: java.lang.NullPointerException

最佳答案

适配器的要点是将一组数据链接到一组 View (由 AdapterView 创建,即 ListView)——您无需为其提供要使用的 View 数组。

在这种情况下,您需要覆盖填充布局的 ArrayAdapter 的 getView 方法。您需要一个既可以表示 String 又可以表示 int(对于可绘制资源 ID)的数据集,类似于 Pair (不理想但为了简单起见):

ArrayList<Pair<String, Integer>> classes = new ArrayList<Pair<String, Integer>>();
classes.add(Pair.create("My Profile", R.drawable.myProfile));
// add all items
ArrayAdapter listadaptor = new ArrayAdapter<Pair<String, Integer>>(MainMenu.this,
R.layout.single_list_row, R.id.title, classes) {
public View getView(int position, View convertView, ViewGroup container) {
if(convertView == null) {
convertView = LayoutInflator.from(getContext()).inflate(R.layout.single_list_row, container, false);
}
TextView title = (TextView) convertView.findViewById(R.id.title);
Pair<String, Integer> item = getItem(position);
title.setText(item.first);
title.setCompoundDrawables(item.second, 0, 0, 0);
return convertView;
}
};

关于android - 如何将 ImageView 数组添加到 ListView 的 ArrayAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20880841/

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