我正在使用android studio进行开发并使用Listview。
但是有问题。第一次启动就可以了,但是当我按下android studio中的Apply changes按钮时,listview的值又添加了一个
像这样。 这是第一次启动。
1111111
2222222
3333333
4444444
当我按下“应用更改”按钮时
1111111
2222222
3333333
4444444
1111111
2222222
3333333
4444444
我尝试了绑定列表对象的clear(),但不起作用... 为什么?
这是ListView的初始化方法 开机时会运行一次
datas.clear();
myData.clear();
parcels.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Iterator<DataSnapshot> it = dataSnapshot.getChildren().iterator();
while (it.hasNext()) {
DataSnapshot temp = it.next();
if (temp.getKey().equals("log")) break;
ParcelModel parcel = new ParcelModel();
initParcel(temp, parcel); // Don't care about this
}
onTrackingCodeChange();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
在此方法之后。 ListView命名数据具有四个值。
这是适当地分离数据的
myData.clear();
switch (trackingCode) {
case 1:
for(ParcelModel p : datas){
myData.add(0, p);
}
break;
case 2:
// 배송중 목록
for (ParcelModel p : datas) {
if (p.getState().getId().equals("delivered")) continue;
myData.add(0,p);
}
break;
case 3:
// 배송완료 목록
for (ParcelModel p : datas) {
if (!p.getState().getId().equals("delivered")) continue;
myData.add(0, p);
}
break;
}
if (myData.size() > 0) {
// listView 바인딩
ParcelListAdapter adapter = new ParcelListAdapter(myData);
findViewById(R.id.main_empty).setVisibility(View.GONE);
myParcelList.setVisibility(View.VISIBLE);
myParcelList.setAdapter(adapter);
init = true;
} else {
findViewById(R.id.main_empty).setVisibility(View.VISIBLE);
myParcelList.setVisibility(View.GONE);
}
这是第一次启动时的完美工作。直到我按下“应用更改”按钮。
我希望如果使用List.clear()删除了旧值,则新值将添加到ListView中。因此,在ListView中将有四个值而不是八个。
但是实际上,ListView仍然有八个值
答案 0 :(得分:0)
您不仅需要清除您的数据集并再次显示它,还需要更新您的UI,并通知数据已更改,以便您的UI进行更新。由于您使用适配器来获取商品,因此yourAdapter.notifyDataSetChange();
就像@IBOutlet weak var flightTypeSegCont: UISegmentedControl!
@IBAction func flightType(_ sender: UISegmentedControl) {
if(flightTypeSegCont.selectedSegmentIndex == 0)
{
self.direcrCard.isHidden = false
self.ViaCardView.isHidden = true
}
else
{
self.direcrCard.isHidden = true
self.ViaCardView.isHidden = false
}
}
一样。
我希望它能解决您的问题。