我有一个自定义的行布局,其中包含用于 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/