Android ListView Adapter 稍后更改膨胀布局
Android ListView Adapter changing the inflated layout later
我有 3 个列表视图项目布局。
通过重新打开 activity 它是没有错误的工作,但是如果我通过单击按钮添加项目,布局不会改变,因为 row != null。
我的英语不好,希望你能理解我。
LayoutInflater inflater = null;
int layout = 0;
if(chatMessageObj.centered) {
layout = R.layout.activity_chat_singlemessage_center;
} else {
layout = chatMessageObj.left ? R.layout.activity_chat_singlemessage_left : R.layout.activity_chat_singlemessage;
}
if (row == null) {
inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(layout, parent, false);
}
解决此问题的最简单方法是仅创建一个列表视图项:LinearLayout
,方向为 vertical
,有 3 个子项:
- R.layout.activity_chat_singlemessage_left,
- R.layout.activity_chat_singlemessage_center,
- R.layout.activity_chat_singlemessage
并在您的 getView()
方法中根据给定条件显示相关布局并隐藏不应显示的布局。
我有 3 个列表视图项目布局。 通过重新打开 activity 它是没有错误的工作,但是如果我通过单击按钮添加项目,布局不会改变,因为 row != null。 我的英语不好,希望你能理解我。
LayoutInflater inflater = null;
int layout = 0;
if(chatMessageObj.centered) {
layout = R.layout.activity_chat_singlemessage_center;
} else {
layout = chatMessageObj.left ? R.layout.activity_chat_singlemessage_left : R.layout.activity_chat_singlemessage;
}
if (row == null) {
inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(layout, parent, false);
}
解决此问题的最简单方法是仅创建一个列表视图项:LinearLayout
,方向为 vertical
,有 3 个子项:
- R.layout.activity_chat_singlemessage_left,
- R.layout.activity_chat_singlemessage_center,
- R.layout.activity_chat_singlemessage
并在您的 getView()
方法中根据给定条件显示相关布局并隐藏不应显示的布局。