gpt4 book ai didi

java - 来自 View 适配器警告的无条件布局膨胀

转载 作者:行者123 更新时间:2023-11-29 08:32:53 25 4
gpt4 key购买 nike

我在带有以下代码的警报对话框中使用 GridView。它给我在标题中调用的错误。我的代码和更多需要的信息如下所示。

  private void showGotoPageDialog() {

final Dialog mDialog = new Dialog(getActivity());
mDialog.setContentView(R.layout.grid_dialogue);
mDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
GridView mGridView = (GridView) mDialog.findViewById(R.id.grid_dialog);
ArrayList<String> tmp = new ArrayList<>(mPageOptions.length);
for(int i = 0; i < mPageOptions.length; i++)
{
tmp.add(mPageOptions[i].split(" ")[1]);
}
CustomAdapter adapter = new CustomAdapter(getActivity(), tmp, mPageIndx);
//ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, tmp);
mGridView.setAdapter(adapter);
mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int item, long l) {
mDialog.dismiss();
mPageIndx = item + 1;
updateQuotesListServer();
updatePageInfo();
}
});
mDialog.show();
TextView dismiss = (TextView) mDialog.findViewById(R.id.dialog_dismiss);
dismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDialog.dismiss();
}
});
}

像这样的适配器

 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.

我的代码按预期正常工作,我没有遇到任何问题。 我想知道修复此问题需要进行哪些更改以及它有什么好处?让我知道是否有人可以帮助我解决这个问题并解决我的疑问。

谢谢

最佳答案

View Adapter 的构建不是为每个项目创建一个新 View ,而是可以重用滚动到屏幕外的 View (它们通过 getView 的第二个参数传入)。你被警告你应该尝试重用这些 View 而不是总是膨胀新的 View 。将行更改为

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

关于java - 来自 View 适配器警告的无条件布局膨胀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46524029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com