[英]Android unable to empty listview items
I am trying to prevent my listview items to append when i press the button twice. 我试图阻止我按两次按钮时附加到listview项目。 I tried to use .Clear() but I dont know where to put it or how to put it, sometimes it stops items from even populating or doesn't clear the items at all. 我尝试使用.Clear(),但我不知道将其放置在何处或如何放置,有时它甚至阻止填充项或根本不清除项。
global stuffs: 全球性的东西:
ArrayAdapter<CharSequence> adapter;
ArrayList<MessageDetails> details;
My button: 我的按钮:
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
try
{
//Tried clearing adapter first before code runs but items do not even get displayed
adapter.clear();
adapter.notifyDataSetChanged();
//sendPostData calls refreshListView method
new sendPostData().execute(nric.getText().toString());
}
catch (Exception e)
{
}
}
my refreshListView() method: 我的refreshListView()方法:
private void refreshListView()
{
adapter = new ArrayAdapter<CharSequence>(getActivity().getApplicationContext(), android.R.layout.simple_list_item_1, items);
myInfoList.setAdapter(adapter);
details = new ArrayList<MessageDetails>();
MessageDetails Detail;
Detail = new MessageDetails();
for (int i =0; i < itemName.size(); i++)
{
float totalprice = itemPrice.get(i) * Quantity.get(i);
Detail = new MessageDetails();
Detail.setitemName(itemName.get(i));
Detail.setItemDescription(description.get(i));
Detail.setitemPrice(String.valueOf(totalprice));
Detail.setQuantity(Quantity.get(i).toString() + " sets");
Detail.setDate(purchaseDate.get(i).toString());
details.add(Detail);
}
myInfoList.setAdapter(new CustomAdapter(details , getActivity()));
}
EDIT removed first adapter. 编辑删除了第一个适配器。
Global item: 全局项目:
CustomAdapter mCustomAdapter;
refreshListView: refreshListView:
private void refreshListView()
{
details = new ArrayList<MessageDetails>();
MessageDetails Detail;
Detail = new MessageDetails();
for (int i =0; i < itemName.size(); i++)
{
float totalprice = itemPrice.get(i) * Quantity.get(i);
Detail = new MessageDetails();
Detail.setitemName(itemName.get(i));
Detail.setItemDescription(description.get(i));
Detail.setitemPrice(String.valueOf(totalprice));
Detail.setQuantity(Quantity.get(i).toString() + " sets");
Detail.setDate(purchaseDate.get(i).toString());
details.add(Detail);
}
mCustomAdapter = new CustomAdapter(details , getActivity());
myInfoList.setAdapter(mCustomAdapter);
}
you submit two differnts Adapter
instance to your ListView
, and the latter override the former instance. 您将两个不同的Adapter
实例提交到ListView
,后者将覆盖前一个实例。 So you should keep a reference to CustomAdapter
and write a method do clear the dataset. 因此,您应该保留对CustomAdapter
的引用,并编写一个方法来清除数据集。
CustomAdapter mCustomAdpater = new CustomAdapter(details , getActivity());
myInfoList.setAdapter(mCustomAdpater);
inside CustomAdapter, write your own clear()
method and, inside onClick()
you will call 在CustomAdapter中,编写您自己的clear()
方法,然后在onClick()
调用
mCustomAdpater.clear();
This worked for me: 这对我有用:
listview.removeAllViewsInLayout();
listview.removeAllViewsFromAdapter();
listview.setAdapter(null);
listview.refreshDrawableState();
listview.removeViews(0, listview.getChildCount());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.