正如您應該知道的那樣,ListView
可以回收視圖。但是我想要使用可以單擊和展開的元素。就像我已經做了: ListView和它的「怪異」行爲。我該如何解決這種情況?
但它完全搞砸了,即使使用:
View checklayout = convertView;
if(checklayout == null){
checklayout = inflater.inflate(R.layout.home_cell, null);
}
當一些擴張開看法熄滅屏幕,再生一個,這不應該是可擴展的,收到消失的佈局。只有擁有「1AVALIAÇÃOLANÇADA」的視圖才能打開並顯示其內容。我通過使用if(qtdAvaliacoes > 0)
來添加此內容,這是我的對象的一個屬性,它來自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方法綁定到行位置,它會更好。
任何想法?或者,我的解決方案對你來說是開發商的觀點。 謝謝。
它不會讓我的應用程序加載更多數據嗎?因爲用戶不會總是需要這些表。此外,表格是動態填充的。謝謝 ! –
這將需要你有更多的意見。儘管最初的充氣時間會增加一點,但實際的數據差異很小。 perf可能會有輕微的打擊,但幾乎找到的任何解決方案都會打到循環視圖,這通常很難做到。另一種做法是擁有2種視圖類型 - 完全充氣的視圖類型和不充氣的視圖類型,並跟蹤哪些項目應該膨脹或不膨脹。這是更多的工作,但會降低大部分性能(儘管最終可能需要更多數據,具體取決於回收商的持有量)。 –