您应该知道,ListView
会回收视图。但我想使用可以点击和扩展的元素。像我已经做过的那样:
但它完全搞砸了,即使使用:
View checklayout = convertView;
if(checklayout == null){
checklayout = inflater.inflate(R.layout.home_cell, null);
}
当一些打开的可扩展视图离开屏幕时,回收的视图不应该是可扩展的,它会接收消失的布局。只有具有“1AVALIAÇÃONLANADA”的视图才能打开,并显示其内容。我使用if(qtdAvaliacoes > 0)
添加此内容,@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
是我的Object的属性,来自ArrayList<>。
我通过以下方式解决了这个禁用回收商的问题:
@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;
一旦我的listView只收到5~10行。但我知道这不是一个好习惯。当我写这个问题时,我找到了一个解决方案,在给任何视图充气之前调用我的对象,然后检查属性:
NAME | SURNAME
Joe | Doe
John | Smith
但我不认为这是最好的方法。我读了一些关于标签的内容,但有点困惑。我想如果我可以将这些onClick方法绑定到行位置,那会更好。
有什么想法吗?开发人员的观点是我的解决方案对你有好处。 感谢。
答案 0 :(得分:0)
最简单的方法是不在列表项中执行子通道。通过视觉可见性来做,如果你不希望它显示,那么使膨胀的部分为GONE。您只需在每次调用getView
时明确设置该视图的可见性