【发布时间】:2018-09-30 03:37:44
【问题描述】:
我有一个具有不同布局的行的 ListView。所以我使用的是ViewHolder的模式。
如果用户单击一行,则必须显示/隐藏同一行的一个子布局。
viewHolder.btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag();
Log.d(TAG, "Line in position " + position + " clicked");
if (!checkBoxSendChoice[position]) {
checkBoxSendChoice[position] = true;
viewHolder.layout_choice.setVisibility(View.VISIBLE);
} else {
checkBoxSendChoice[position] = false;
viewHolder.layout_choice.setVisibility(View.GONE);
}
}
});
但是我注意到,由于 setVisibility(),整个 ListView 都被刷新了(所有行都多次调用 getView)。如果我注释掉这两个 setVisibility() 指令,ListView 将不再刷新。
是否可以优化并避免刷新ListView中的所有视图?
【问题讨论】:
标签: java android listview visibility android-viewholder