gpt4 book ai didi

android - notifyDataSetChanged 从不工作

转载 作者:行者123 更新时间:2023-11-30 03:53:22 27 4
gpt4 key购买 nike

我一直在寻找年龄并尝试了几个月。我永远无法让我的观点(任何观点)无效。这里有什么问题,任何人都可以告诉我吗?谁能告诉我如何使用这些无效方法。提前致谢!

                if(result.equals("true"))
{
View row = invoices.getChildAt(info.position);
//TextView bgr = (TextView) row.findViewById(R.id.status);
//bgr.setBackgroundResource(R.color.blue);
//row.setVisibility(View.GONE);

Animation anim = AnimationUtils.loadAnimation(Invoices.this, R.anim.down_to_top);
anim.setDuration(500);
invoices.getChildAt(info.position).startAnimation(anim );
final int row_pos = info.position;

new Handler().postDelayed(new Runnable() {

public void run() {

/*row.getInstance().remove(
FavouritesManager.getInstance().getTripManagerAtIndex(info.position)
);*/
ListView invoices = (ListView) findViewById(R.id.allInvoices);
View row = invoices.getChildAt(row_pos);
row.setVisibility(View.GONE);
getAllInvoices();
myAdapter.notifyDataSetChanged();

}

}, anim.getDuration());

Toast.makeText(getApplicationContext(), "Deleted!", Toast.LENGTH_SHORT).show();
}

更新:这就是我现在得到的。它删除了 View 并正确地设置了动画,但它仍然没有失效?

                            ListView invoices = (ListView) findViewById(R.id.allInvoices);
View row = invoices.getChildAt(row_pos);
HashMap<String, String> lRow = invoice_items.get(row_pos);
lRow.remove(row);
row.setVisibility(View.GONE);
myAdapter.notifyDataSetChanged();

最佳答案

之所以调用 notifyDataSetChanged 不起作用,是因为数据集未更改。

在您的 Handler 中,您更改了 ListView 本身的布局。 ListView 只不过是保存数据的 Adapter 的表示。

要了解其工作原理,this post会解释的。

在您的代码上应用它会输出如下内容:(PSUEDO)

Handler {
lRow = mAdapter.get(row_pos);
lRow.setVisibilty(false); // visibility is a flag of the row object
mAdapter = notifyDataSetChanged();
}

内部适配器:

getView() {
if (row.getVisibility){
// do stuff
} else {
// do other stuff
}
}

关于android - notifyDataSetChanged 从不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com