android - 用于交替行颜色的通用阵列适配器?

标签 android android-arrayadapter

我正在尝试开发一个通用数组适配器类,我想从中继承奇数行和偶数行的行颜色属性。我的通用适配器类是

public class SpecialAdapter<T> extends ArrayAdapter<T> {
    private int[] colors = new int[] { 0x30FF0000, 0x300000FF };

    public SpecialAdapter(Context context, int resource, List<T> items) {
        super(context, resource,items);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        int colorPos = position % colors.length;
        view.setBackgroundColor(colors[colorPos]);
        return view;
    }
}

我想将它扩展到我的 Adapter 类以更改行颜色。

公共(public)类 MyArrayAdapter 扩展了 SpecialAdapter{..}

这可能吗?目前它不显示任何颜色。我没有在 Adapter 类中设置任何颜色。我只需要从基类继承行颜色,这样我就可以将它用于不同的适配器类。

这是我的适配器类

public MyArrayAdapter(Activity context, List<MyObject> list) {
        super(context, R.layout.mylayout, list);
        this.context = context;
        this.list = list;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.mylayout, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.txtName = (TextView) view.findViewById(R.id.label);          
            view.setTag(viewHolder);
        } else {
            view = convertView;
            ((ViewHolder) view.getTag()).txtName.setTag(list.get(position));
        }
        ViewHolder holder = (ViewHolder) view.getTag();
        holder.txtName.setText("Position " + position);
        return view;
    }

最佳答案

据我所知,没有这样的通用方法。如果只有 2 种颜色,您可以使用以下。

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {  
    View view = super.getView(position, convertView, parent);  
    if (position % 2 == 1) {
        view.setBackgroundColor(Color.BLUE);  // you can add any color here
    } else {
        view.setBackgroundColor(Color.CYAN);  // don't like cyan? add another color.
    }

    return view;  
    }

关于android - 用于交替行颜色的通用阵列适配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28873975/

相关文章:

android - 获取 volley 请求标签作为响应

android - CSS android 和 iOS 问题

android - 重绘 ListView 中的单行

android - 偶尔从 (View).findViewByID 获取 null

android - 将三个 ArrayList 合二为一并在自定义 ListView 中查看

arraylist - 动态更新Design支持TabLayout的标题

android - ViewPager 中的 FragmentTransaction

java - 如何使用for循环连续图像 slider ?

android - 是否最好使用 Activity.onAttachFragment 或 Fragment.onAttach 在 Activity 和嵌套 fragment 之间进行通信?

android-studio - 为什么我不能在 Kotlin 中初始化我的 ArrayAdapter?