我想在列表中的前3个项目中显示不同的图像

时间:2015-09-22 11:40:38

标签: android android-listview adapter

从显示的图像到列表的其余部分,将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;
    }

}

1 个答案:

答案 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),因为它看起来更干净:)