当前位置: 代码迷 >> Android >> ,listView之中的position的精确定位有关问题
  详细解决方案

,listView之中的position的精确定位有关问题

热度:45   发布时间:2016-04-28 07:54:11.0
求助,listView之中的position的精确定位问题
我自己写了个类似备忘录的应用,在添加备忘录后,会在listView上按行显示内容。点击每条备忘录会转到相应备忘录的设置界面,是用listView的position来定位数据库中相应数据的id的。功能之中有一个删除功能,删除当前正在编辑的备忘录,通过传进来的id调用delete方法。可是我发现删除只能是按顺序,从最新添加的备忘开始删除,才能全部删除完毕,如果从任意一条开始删除,这条之后的备忘再单击就会串到其他的备忘录数据。最后肯定会有一条备忘录在listView中删不掉(position和id已经脱节)。怎样才能任意删除又不影响其他list的正常功能?下面是相关代码:
//为ListView添加事件监听
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int positiong,
long id) {
// TODO Auto-generated method stub
//通过listView的position定位数据库中的ID
Uri uri = ContentUris.withAppendedId(Tasks.CONTENT_URI, id+1);
Cursor cursor = managedQuery(uri, PROJECTION, null, null
, Tasks.DEFAULT_SORT_ORDER);
//向操作界面传送该条备忘录的相关内容
if(cursor.moveToNext()){
int id1 = cursor.getInt(0);
String content = cursor.getString(1);
String created = cursor.getString(2);
int alarm = cursor.getInt(3);
String date1 = cursor.getString(4);
String time1 = cursor.getString(5);
int on_off = cursor.getInt(6);
Bundle b = new Bundle();
b.putInt("id", id1);
b.putString("content", content);
b.putString("created", created);
b.putInt("alarm", alarm);
b.putString("date1", date1);
b.putString("time1", time1);
b.putInt("on_off", on_off);
Log.v("---time and date---",date1+"/"+time1);
intent.putExtra("b", b);
intent.setClass(DiaryActivity.this, WriteDiaryActivity.class);
startActivityForResult(intent,NOT_NEW);
Log.v("----DiaryActivity----","打开原有的保存内容");
}
}
});


下面是删除功能的相关代码(删除功能在按钮上实现,位于操作具体备忘录数据的界面)
deleteBn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//从上面的界面接受传送的数据
Intent intent = getIntent();
if(intent != null){
Bundle b = intent.getBundleExtra("b");
if( b != null){
int id = b.getInt("id");
Uri uri = ContentUris.withAppendedId(Tasks.CONTENT_URI, id);
getContentResolver().delete(uri, null, null);
finish();
}else
//显示错误对话框
showSaveErrorDialog(DELETE_ERROR);
}
}
});


请教相关大神,怎么实现?谢谢!!!
数据库 数据 listview android 应用

------解决方案--------------------
在给listview添加数据的时候在list中添加一条map.put("id","1");比如id是1,在listview监听事件中就可以采用id = (Integer)list.get(position).get("id");来得到点击的那条数据id
  相关解决方案