我有一个ListView,它通过一个数组向我显示一些数据(在另一个类中,我通过它的对象访问它).
每当我通过上下文菜单从ListView中删除元素时,列表不会刷新,但元素将从数组中删除.如何刷新列表以显示此信息?
码:
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if (v.getId()==R.id.mainListView) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
post=info.position;
menu.setHeaderTitle(stocks[info.position]);
String[] menuItems = stt;
for (int i = 0; i<menuItems.length; i++) {
menu.add(Menu.NONE, i, i, menuItems[i]);
}
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int menuItemIndex = item.getItemId();
String[] menuItems = stt;
String menuItemName = menuItems[menuItemIndex];
listItemName = stocks[info.position];
stockname.remove(post-1);
return true;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用列表视图的自定义适配器来显示图像和标题.在我的应用程序中,我添加和删除列表中的项目,我必须在界面上显示更改.对数据的任何更改我从数据库中获取所有列表并将其存储在适配器列表中,然后调用adapter.notifyDataSetChanged(); 但界面没有显示任何变化.另一方面,当我直接添加或删除适配器中的项目时,它正确响应.我使用了简单的适配器和适配器.notifyDataSetChanged(); 工作正常,但对于自定义它没有响应.我也尝试过很多关于stackoverflow的解决方案但是没有工作.比如 适配器数据更改时更新列表视图
Adapter.notifyDataSetChanged()不起作用
我这样做就像在创造一样
enter code here
product_data = new ArrayList<Product>();
Bundle extras = getIntent().getExtras();
if (extras != null) {
value = extras.getInt("list_id");
}
product_data = db.getAllProductsstatus(value, 1);
Collections.reverse(product_data);
adapter = new ProductAdopter(this,
R.layout.listview_item_row, product_data, 2);
ListView listView1 = (ListView)findViewById(R.id.listView1);
listView1.setAdapter(adapter);
registerForContextMenu(listView1);
Run Code Online (Sandbox Code Playgroud)
并在onMenuItemSelected中
enter code here
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int menuItemIndex = item.getItemId();
String listItemName = adapter.getItem(info.position)._name;
int id = adapter.getItem(info.position)._id;
if(menuItemIndex == 0)
{
db.deleteProduct(adapter.getItem(info.position));
product_data …Run Code Online (Sandbox Code Playgroud) 我定义了以下代码,以便能够在特定位置设置文本.
if(position == 0) {
holder.text.setText("blah");
}
Run Code Online (Sandbox Code Playgroud)
我想要检查位置是否等于0,然后如果是,则在位置p上设置文本 - 每次它是p =位置+ 1(下一个位置).我们是否能够将文本从持有者设置为文本视图,但是在某个位置.
谢谢.
android listview android-adapter baseadapter android-viewholder
我有一个ListAdapter如下所示:
setListAdapter(new ArrayAdapter<String>(DeleteMenu.this,
android.R.layout.simple_list_item_1,
classes));
Run Code Online (Sandbox Code Playgroud)
我试图notifyDataSetChanged()在一个onListItemClick()函数中调用它.我尝试了几种不同的方法,并在StackOverFlow中查看了类似的问题,但我仍然无法弄明白.
有人可以帮忙吗?
编辑:我应该更清楚,我没有收到错误,我根本就不知道该怎么称呼函数notifyDataSetChanged()方法.我是否必须将我ListAdapter的变量分配给变量并将其称为var.notifyDataSetChanged()?