【发布时间】:2015-12-17 22:00:36
【问题描述】:
您应该知道,ListView 回收视图。但我想使用可以单击和展开的元素。就像我已经做过的那样:
但它完全搞砸了,即使使用:
View checklayout = convertView;
if(checklayout == null){
checklayout = inflater.inflate(R.layout.home_cell, null);
}
当一些打开的可扩展视图离开屏幕时,不应扩展的回收视图会接收消失的布局。仅应打开具有“1 AVALIAÇÃO LANÇADA”的视图并显示其内容。我使用 if(qtdAvaliacoes > 0) 添加此内容,这是我的 Object 的属性,来自 ArrayList。
我通过以下方式“解决”了禁用回收器的问题:
@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
一旦我的 listView 将只接收 5~10 行。但我知道这不是一个好习惯。当我写这个问题时,我找到了一个解决方案,在膨胀任何视图之前调用我的对象,然后检查属性:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View checklayout = convertView;
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final Disciplina disciplina = lista.get(position);
if(checklayout == null || disciplina.getQtdAvaliacoes() == 0){
checklayout = inflater.inflate(R.layout.home_cell, null);
}
final View layout = checklayout;
但我认为这不是最好的方法。我读了一些关于标签的东西,但有点困惑。我认为如果我可以将这些 onClick 方法绑定到行位置会更好。
有什么想法吗?或者我的解决方案是否适合你,开发人员的观点。 谢谢。
【问题讨论】:
标签: android listview android-listview android-recyclerview