从显示的图像到列表的其余部分,将LIstView
中的前三项显示不同的图像。它不适用于我的适配器类,它只是在布局中显示所有项目的图像
这是我的代码
public class MySimpleArrayAdapter extends ArrayAdapter {
private final Context context;
private final String[] values;
// Constructor which is called when the custom adapter is created
public MySimpleArrayAdapter(Context context, String[] values) {
// Select the layout for the cell
super(context, R.layout.list_layout, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//inflate the xml file to a view object and must be used as shown below
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// create the row view
View rowView = inflater.inflate(R.layout.list_layout, parent, false);
// Link the widgets on the layout with the Java codes
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
// Set the content of the text based on the values string in the main activity
textView.setText(values[position]);
if ( position == 0 || position == 1 || position == 2)
imageView.setImageResource(R.drawable.logo);
else
imageView.setImageResource(R.drawable.second);
return rowView;
}
}
答案 0 :(得分:0)
我认为您应该使用BaseAdapter
代替ArrayAdapter
。数组适配器主要用于将一个字段与一组值绑定。如果您的列表视图需要自定义,我建议您使用BaseAdapter。
这是来自android文档:
由任意数组支持的具体BaseAdapter 对象。默认情况下,此类需要提供的资源ID 引用单个TextView 。 如果你想使用更复杂的 layout,使用也带有字段id的构造函数。该字段id 应该在较大的布局资源中引用TextView。
话虽这么说,仍然可以使用ArrayAdapter
,你只需要在ArrayAdapater
中使用另一个构造函数,就像在文档中消化一样。因此,不要在构造函数中使用super(context, R.layout.list_layout, values);
,而是使用super(context, R.layout.list_layout, R.id.label, values);
。如果希望arrayadapter处理图像,则需要在构造函数中传递textview id。另外,我会将if ( position == 0 || position == 1 || position == 2)
更改为if ( position < 3)
,因为它看起来更干净:)