视图适配器警告的无条件布局膨胀

时间:2017-10-02 10:45:01

标签: java android android-layout

我在我的警报对话框中使用GridView和下面的代码。我给出了标题中的错误。我的代码和更多必需信息如下所示。

 private class CustomAdapter extends BaseAdapter
    {
        private ArrayList<String> list;
        private LayoutInflater inflater;
        private int currentPage;

        CustomAdapter(Activity activity, ArrayList<String> list, int currentPage)
        {
            this.list = new ArrayList<>();
            this.list.addAll(list);
            inflater = (LayoutInflater) activity.getSystemService(AppCompatActivity.LAYOUT_INFLATER_SERVICE);
            this.currentPage = currentPage;
        }

        public void setCurrentPage(int currentPage)
        {
            this.currentPage = currentPage;
        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view = View.inflate(getActivity(),R.layout.dialogue_item, null);
            TextView txt = (TextView) view.findViewById(R.id.textview_dialogue);
            txt.setText(list.get(i));
            if(i == currentPage-1)
            {
                txt.setTextColor(Color.BLACK);
            }

            return view;
        }
    }

和像这样的适配器

view = View.inflate(getActivity(),R.layout.dialogue_item, null);

它在这一行给我警告

Unconditional layout inflation from view adapter: Should use View Holder pattern (use recycled view passed into this method as the second parameter) for smoother scrolling.

警告如下所示

I want know that What changes require for fix this and what is benefit of it ?

我的代码工作正常,我没有遇到任何问题。 {{1}}让我知道是否有人可以帮助我从这里出来并解决我的疑问。

由于

3 个答案:

答案 0 :(得分:2)

构建视图适配器,以便不是为每个项创建新视图,而是可以重用滚动屏幕的视图(它们通过getView的第二个参数传入)。您将收到警告,您应该尝试重复使用这些视图,而不是始终对新视图进行充气。将行更改为

if (view == null) view = View.inflate(getActivity(),R.layout.dialogue_item, null);

答案 1 :(得分:0)

试试这个

view = View.inflate(R.layout.dialogue_item, viewGroup, null);

答案 2 :(得分:0)

如果不是必需的,换句话说,如果view不为null,则不必在getView()方法中调用以下行:

view = inflter.inflate(R.layout.spinner_rect, null);

问题产生了与Web上相同的错误源代码: https://abhiandroid.com/ui/custom-spinner-examples.html https://demonuts.com/android-custom-spinner-image/ 应用我的解决方案以获得正确性