- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个由函数动态填充的 ListView ,该函数返回一个接收字符串参数的 ArrayAdapter。此字符串参数是另一个动态填充的 Spinner 的选定项。
当函数返回一个项目数大于 0 的 ArrayAdapter 时,Listview 使用新项目成功刷新,但是当函数在 ArrayAdapter 上返回 0 个项目时,listview 不会清除之前的项目。这是我正在处理的代码:
ManifiestoSpinner = (Spinner) findViewById(R.id.spnManifiesto);
FacturasListview = (ListView) findViewById(R.id.lvwFacturas);
ManifiestoSpinner = (Spinner)
ManifiestoSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String EstadoID = EstadoSpinner.getSelectedItem().toString();
ArrayList<String> ListManifiestos = (ArrayList<String>)Factura.GetManifiestosByEstado(EstadoID);
ActualizarManifiestSpinner(manifiesto);
}
public void onNothingSelected(AdapterView<?> arg0) {
}
private void ActualizarManifiestSpinner (ArrayList<String> manifiesto)
{
String[] datos = new String[manifiesto.size()];
ArrayAdapter<String> AdapterManifiesto = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_spinner_dropdown_item, manifiesto.toArray(datos));
ManifiestoSpinner.setAdapter(AdapterManifiesto);
}
ManifiestoSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String Manifiesto = ManifiestoSpinner.getSelectedItem().toString();
String Estado = EstadoSpinner.getSelectedItem().toString();
fillData(Estado, Manifiesto);
return;
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
private void fillData(String EstadoID, String ManifiestoID) {
ArrayAdapter<String> adapter = (ArrayAdapter<String>) FacturasListview.getAdapter();
if(adapter!= null)
{
adapter.clear();
FacturasListview.setAdapter(adapter);
FacturasListview.invalidateViews();
}
List<String> from = Factura.GetListClientesByEstadoManifiesto(EstadoID, ManifiestoID);
adapter = new ArrayAdapter<String>(this,R.layout.factura_row, R.id.text1 ,from);
FacturasListview.setAdapter(adapter);
}
当调用的 List 的 from.size() = 0 时,之前显示在 Listview 上的项目不会被清除。
最佳答案
谢谢南马里。我听从了你的建议,但 FacturasListview 没有名为 notifyDatasetChanged() 的方法,适配器有,所以我得到了这段代码:
ArrayAdapter<String> adapter = (ArrayAdapter<String>) mFacturasListview.getAdapter();
if(adapter!= null)
{
adapter.clear();
adapter.notifyDataSetChanged();
}
Listview 仍然不会刷新项目。我正在寻找一种方法来清除接收 ArrayAdapter 的 ListView 的所有项目。我正在上传两张图片以展示我正在处理的内容。
在这种情况下,第一个微调器有一个 selecteditem().toString() = "POR RECIBIR",并且基于该参数,第二个微调器动态填充具有 (document.State = “POR RECIBIR”)。在填充第二个微调器后,称为“fillData”的第三个方法用文档中包含的所有客户名称填充 ListView。这是代码:
private void fillData(String EstadoID, String ManifiestoID) {
ArrayAdapter<String> adapter = (ArrayAdapter<String>) mFacturasListview.getAdapter();
if(adapter!= null)
{
adapter.clear();
adapter.notifyDataSetChanged();
}
List<String> from = Factura.GetListClientesByEstadoManifiesto(EstadoID, ManifiestoID);
adapter = new ArrayAdapter<String>(this,R.layout.factura_row, R.id.text1 ,from);
FacturasListview.setAdapter(adapter);
问题发生在第一个微调器有一个 selecteditem().toString() = "POR ENTREGAR"时,并且根据该参数,我们发现 0 个文档具有 (document.State = "POR ENTREGAR")。在这里,名为“fillData”的第三个方法应该清除所有 ListView 项,但它没有。这是图像:
关于android - 如何在 Android 中使用 ArrayAdapter 删除 ListView 中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203429/
我是一名优秀的程序员,十分优秀!