刷新的ListView从数据库中删除后 [英] refresh ListView after delete from database
本文介绍了刷新的ListView从数据库中删除后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个SimpleCursorAdapter一个ListView,它从数据库加载信息,我想onlongclicklistener来删除数据库中的一个项目,它工作正常,但名单没有刷新,我试着用listView.refreshDrawableState();而且,我发现作为答案,但没有一个人工作的一些其他的方法,这是我的onCreate功能:
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.layout_act);
imzero =(ImageView的)findViewById(R.id.iv_zero_pers);
tvzero =(TextView中)findViewById(R.id.tv_zero_pers);
dbConnector =新DatabaseConnectorrso(MyListActivity.this);
dbConnector.checkCursor();
如果(DatabaseConnector.de)//检查数据库emplty
{
尝试{
dbConnector.open();
dbConnector.load();从数据库中//负载信息
dbConnector.close();
imzero.setVisibility(View.GONE);
tvzero.setVisibility(View.GONE);
}
赶上(例外前){
ex.printStackTrace();
dbConnector.close();
}
conAdapter =(新ImageAndTextAdapter(MyListActivity.this,
R.layout.meniu_lista_element,NULL,NULL,NULL));
setListAdapter(conAdapter);
}
其他{
dbConnector.close();
imzero.setVisibility(View.VISIBLE);
tvzero.setVisibility(View.VISIBLE);
}
和我试图刷新这样的名单
listView.setOnItemLongClickListener(新OnItemLongClickListener(){
@覆盖
公共布尔onItemLongClick(适配器视图<>母公司视图中查看,INT位置,长的id){
deleteDialog(的Integer.parseInt(DatabaseConnector.id.get(位置))); //从数据库中删除
dbConnector.checkCursor();
如果(DatabaseConnector.de)
{
尝试{
dbConnector.open();
dbConnector.loadPersoane();
listView.refreshDrawableState();
dbConnector.close();
imzero.setVisibility(View.GONE);
tvzero.setVisibility(View.GONE);
}
赶上(例外前){
ex.printStackTrace();
dbConnector.close();
}
conAdapter =(新ImageAndTextAdapter(AltePersoane.this,
R.layout.meniu_lista_element,NULL,NULL,NULL));
setListAdapter(conAdapter);
}
其他{
dbConnector.close();
imzero.setVisibility(View.VISIBLE);
tvzero.setVisibility(View.VISIBLE);
}
返回true;
}
});
解决方案
尝试
yourAdapter.notifyDataSetChanged();
或
yourAdapter.getCursor()重新查询();
更新
我认为你做错了什么,试试这个:
listView.setOnItemLongClickListener(新OnItemLongClickListener(){
@覆盖
公共布尔onItemLongClick(适配器视图<>母公司视图中查看,INT位置,长的id){
deleteDialog(的Integer.parseInt(DatabaseConnector.id.get(位置))); //从数据库中删除
dbConnector.checkCursor();
如果(DatabaseConnector.de)
{
尝试{
dbConnector.open();
dbConnector.loadPersoane();
//删除
dbConnector.close();
imzero.setVisibility(View.GONE);
tvzero.setVisibility(View.GONE);
}
赶上(例外前){
ex.printStackTrace();
dbConnector.close();
}
conAdapter.notifyDataSetChanged();
}
其他{
dbConnector.close();
imzero.setVisibility(View.VISIBLE);
tvzero.setVisibility(View.VISIBLE);
}
返回true;
}
});
I have a ListView with a SimpleCursorAdapter,it load informations from a database,I want onlongclicklistener to delete an item from database,it works fine,but the list does not refreshes,I tried with listView.refreshDrawableState(); and some other methods that I found as answer but no one works,this is my onCreate function:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_act);
imzero = (ImageView)findViewById (R.id.iv_zero_pers);
tvzero = (TextView)findViewById (R.id.tv_zero_pers);
dbConnector = new DatabaseConnectorrso(MyListActivity.this);
dbConnector.checkCursor();
if (DatabaseConnector.de)//check if database is emplty
{
try{
dbConnector.open();
dbConnector.load();//load information from database
dbConnector.close();
imzero.setVisibility(View.GONE);
tvzero.setVisibility(View.GONE);
}
catch(Exception ex) {
ex.printStackTrace();
dbConnector.close();
}
conAdapter =(new ImageAndTextAdapter(MyListActivity.this,
R.layout.meniu_lista_element, null, null, null));
setListAdapter(conAdapter);
}
else{
dbConnector.close();
imzero.setVisibility(View.VISIBLE);
tvzero.setVisibility(View.VISIBLE);
}
and I tried to refresh the list like this
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
deleteDialog(Integer.parseInt (DatabaseConnector.id.get(position))); //delete from database
dbConnector.checkCursor();
if (DatabaseConnector.de)
{
try{
dbConnector.open();
dbConnector.loadPersoane();
listView.refreshDrawableState();
dbConnector.close();
imzero.setVisibility(View.GONE);
tvzero.setVisibility(View.GONE);
}
catch(Exception ex) {
ex.printStackTrace();
dbConnector.close();
}
conAdapter =(new ImageAndTextAdapter(AltePersoane.this,
R.layout.meniu_lista_element, null, null, null));
setListAdapter(conAdapter);
}
else{
dbConnector.close();
imzero.setVisibility(View.VISIBLE);
tvzero.setVisibility(View.VISIBLE);
}
return true;
}
});
解决方案
Try
yourAdapter.notifyDataSetChanged();
or
yourAdapter.getCursor().requery();
Update:
I think you're doing something wrong, try this:
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
deleteDialog(Integer.parseInt (DatabaseConnector.id.get(position))); //delete from database
dbConnector.checkCursor();
if (DatabaseConnector.de)
{
try{
dbConnector.open();
dbConnector.loadPersoane();
//Removed
dbConnector.close();
imzero.setVisibility(View.GONE);
tvzero.setVisibility(View.GONE);
}
catch(Exception ex) {
ex.printStackTrace();
dbConnector.close();
}
conAdapter.notifyDataSetChanged();
}
else{
dbConnector.close();
imzero.setVisibility(View.VISIBLE);
tvzero.setVisibility(View.VISIBLE);
}
return true;
}
});
这篇关于刷新的ListView从数据库中删除后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文