gpt4 book ai didi

java - Android:使用notifyDataSetChanged更新listview

转载 作者:行者123 更新时间:2023-12-01 08:16:17 25 4
gpt4 key购买 nike

我有一个 ListView ,我想从对话框中编辑它。我从谷歌搜索中读到我需要在 ListView 上notifyDataSetChanged(),但是当我尝试这样做时出现错误:

The method notifyDataSetChanged(View) is undefined for the type ListView

enter image description here

我的 ListView 最初设置在我的代码顶部,只有一个:

ListView listView;

然后将其设置在 onload 的例程中

public void loadItems(){
//Removed - just getting the data

int rowCount;
rowCount = mCategory.size();

listView = (ListView) findViewById(R.id.lvItems);


int[] colors = {0, 0xFFFF0000, 0};
listView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
listView.setDividerHeight(1);
listView.setAdapter(new CustomAdapter());

listView.setClickable(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

loadPopup(mDescription.get(position).toString(), mCountList.get(position).toString(), mTemplatecode.get(position).toString());
}
});
//Removed - Tidying up
}

onlick 上加载的对话框有一个简单的界面,一个减号按钮,一个加号按钮,一个文本框和一个执行按钮。文本框中的数字发生更改,这会执行数据库调用。当对话框关闭时,我希望它刷新后面的 ListView 以反射(reflect)新的更改。 IE。基本上再次重新运行 loadItems() 例程。

这就是当您单击对话框上的“执行”按钮时发生的情况。显然我把notifyDataSetChanged放在了错误的地方,因为它甚至不会运行。

 btnGo.setOnClickListener( new View.OnClickListener(){
@Override
public void onClick(View v) {
addAsset(v, AssetDesc, txt.getText().toString(), templateCode);
listView.notifyDataSetChanged();
loadItems();
dialog.dismiss();
}
});

自定义适配器:

class CustomAdapter extends BaseAdapter
{

@Override
public int getCount() {

return mDescription.size();
}
@Override
public Object getItem(int arg0) {

return null;
}

@Override
public long getItemId(int arg0) {

return 0;
}

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {

LayoutInflater inf=getLayoutInflater();
View v=inf.inflate(R.layout.noncriticalasset, arg2,false);

TextView tv=(TextView)v.findViewById(R.id.txtOption);
TextView tvCount=(TextView)v.findViewById(R.id.txtCount);

tv.setText(mDescription.get(arg0).toString());
tvCount.setText(mCountList.get(arg0).toString());

return v;
}

}

最佳答案

您需要在适配器上调用 notifyDataSetChanged,而不是 ListView 本身。

关于java - Android:使用notifyDataSetChanged更新listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141387/

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