我在我的警报对话框中使用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}}让我知道是否有人可以帮助我从这里出来并解决我的疑问。
由于
答案 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/ 应用我的解决方案以获得正确性