[英]Unconditional layout inflation from ViewAdapter: Should Use ViewHolder...?
我有一個列表視圖,顯示對象的 ArrayList(類“Doenca”),這個警告出現在我的充氣器中,我在類中使用 ListView 適配器。 看:
public class DoencaAdapter extends ArrayAdapter<Doenca> {
private final Context context;
private final ArrayList<Doenca> doencaArrayList;
public DoencaAdapter(Context context, ArrayList<Doenca> doencaArrayList) {
super(context, R.layout.linhas_dados_patologia_grupo, doencaArrayList);
this.context = context;
this.doencaArrayList = doencaArrayList;
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View root = inflater.inflate(R.layout.linhas_dados_patologia_grupo, parent, false);
// Indicando quem é quem no layout XML
TextView nomeDoenca = root.findViewById(R.id.doencaNome);
TextView causaDoenca = root.findViewById(R.id.doencaCausa);
TextView efeitoDoenca = root.findViewById(R.id.doencaEfeito);
TextView cuidadoDoenca = root.findViewById(R.id.doencaCuidados);
TextView prevencaoDoenca = root.findViewById(R.id.doencaPrevencao);
TextView categoriaDoenca = root.findViewById(R.id.doencaCategoria);
TextView criadorDoenca = root.findViewById(R.id.doencaCriador);
ImageView doencaFoto = root.findViewById(R.id.doencaFoto);
// Atribuindo valores a cada doença adicionada pelo usuário
nomeDoenca.setText(doencaArrayList.get(position).getNome());
causaDoenca.setText(doencaArrayList.get(position).getCausa());
efeitoDoenca.setText(doencaArrayList.get(position).getEfeito());
cuidadoDoenca.setText(doencaArrayList.get(position).getCuidados());
prevencaoDoenca.setText(doencaArrayList.get(position).getPrevencao());
categoriaDoenca.setText(doencaArrayList.get(position).getCategoria());
criadorDoenca.setText(FirebaseAuth.getInstance().getCurrentUser().getDisplayName());
switch (doencaArrayList.get(position).getCategoria().toString()){
case "Inflamação":
doencaFoto.setImageResource(R.mipmap.ic_doenca1);
// listView.setDivider(new ColorDrawable(context.getResources().getColor(R.color.preto1)));
break;
case "Infecção":
doencaFoto.setImageResource(R.mipmap.ic_doenca2);
// listView.setDivider(new ColorDrawable(context.getResources().getColor(R.color.amarelo2)));
break;
case "Zoonose":
doencaFoto.setImageResource(R.mipmap.ic_doenca3);
// listView.setDivider(new ColorDrawable(context.getResources().getColor(R.color.vermelho3)));
break;
case "Viral":
doencaFoto.setImageResource(R.mipmap.ic_doenca4);
// listView.setDivider(new ColorDrawable(context.getResources().getColor(R.color.azul4)));
break;
case "Outros":
doencaFoto.setImageResource(R.mipmap.ic_doenca5);
break;
default:
doencaFoto.setImageResource(R.mipmap.ic_doenca5);
// listView.setDivider(new ColorDrawable(context.getResources().getColor(R.color.laranja5)));
break;
}
return root;
}
}
我看不到任何錯誤會導致此警告。 但是,我的列表視圖的項目顯示正常,只有一項沒有顯示,但它必須是數據庫推送數據。
這是您想要初始化視圖的方式,因為convertView
可以在視圖回收時重新使用。
public class DoencaAdapter extends ArrayAdapter<Doenca> {
private final Context context;
private final ArrayList<Doenca> doencaArrayList;
public DoencaAdapter(Context context, ArrayList<Doenca> doencaArrayList) {
super(context, R.layout.linhas_dados_patologia_grupo, doencaArrayList);
this.context = context;
this.doencaArrayList = doencaArrayList;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view;
if (convertView != null) {
view = convertView;
} else {
view = LayoutInflater.from(context).inflate(R.layout.linhas_dados_patologia_grupo, parent, false);
}
...
return view;
}
}
此外,您可能需要考慮使用 RecyclerView。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.