代码之家  ›  专栏  ›  技术社区  ›  Camadas

安卓R、 布局。*如何将此作为方法上的参数接收?

  •  0
  • Camadas  · 技术社区  · 6 年前

    我有一个方法可以接收上下文和列表,这样它就可以更改适配器的背景颜色并返回它,但现在我遇到的情况是,它必须是 android.R.Layout.simple_list_item_1 对于单线和 android.R.Layout.simple_list_item_2 也可能是其他类型的 android.R.Layout.*

    如何在方法上定义参数?

    这就是我目前的方法

    private ArrayAdapter<String> AdapterColor(List<String> list, Context context)
    {
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, list)
        {
            @Override
            public View getView(int position, View converView, ViewGroup parent)
            {
                View view = super.getView(position, converView, parent);
                if(position %2 == 1)
                {
                    view.setBackgroundColor(Color.parseColor("#FFD6D6D6"));
                }
                else
                {
                    view.setBackgroundColor(Color.parseColor("#FFFAFAFA"));
                }
                return view;
            }
        };
        return adapter;
    }
    

    我确实尝试了作为参数的布局,但没有工作,我确实搜索了它,但找不到有关此的信息。

    编辑

    我想做这样的事情:

    private ArrayAdapter<String> AdapterColor(List<String> list, Context context, Layout layoutParam)
    {
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, layoutParam, list)
        {
            @Override
            public View getView(int position, View converView, ViewGroup parent)
            {
                View view = super.getView(position, converView, parent);
                if(position %2 == 1)
                {
                    view.setBackgroundColor(Color.parseColor("#FFD6D6D6"));
                }
                else
                {
                    view.setBackgroundColor(Color.parseColor("#FFFAFAFA"));
                }
                return view;
            }
        };
        return adapter;
    }
    

    想要接收 LayoutParam 从外部到方法,使代码更简单。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Zun Juliano Moraes    6 年前
    void setLayout(@LayoutRes int layoutRes){
        // do something with layoutRes
    }
    
    setLayout(R.layout.doggo)
    

    看见 https://developer.android.com/reference/android/support/annotation/LayoutRes.html 有关详细信息

        2
  •  0
  •   Luís Henriques    6 年前

    而不是:

    View view = super.getView(position, converView, parent);
    

    使用“converView”(或convertView,但您更喜欢:D)。像这样:

    converView.setBackgroundColor(Color.parseColor("#FFD6D6D6"));