我是一個新手,我一直在嘗試開發聯繫人應用程序以及另一個待辦事項應用程序,但這是一個與我的問題有關的問題聯繫人應用。ListView項目的刪除選項總是刪除第一個項目,而不管哪個項目被點擊
插入和查看和刪除功能正常工作,但唯一的問題是,無論我選擇在ListView上刪除哪個項目,它總是刪除最上面的項目。
下面是一些代碼:
MainActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.listView1);
im=(ImageButton) findViewById(R.id.add);
ii=(ImageButton) findViewById(R.id.image);
list = new ArrayList<HashMap<String,String>>();//memory allocation
list = db.getvalues();
ListAdapter ad= new SimpleAdapter(MainActivity.this, list, R.layout.custom, new String[]{"id","name"}, new int[]{R.id.id,R.id.name});
lv.setAdapter(ad);
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
TextView numtask = (TextView) arg1.findViewById(R.id.name);
phnum = numtask.getText().toString();
registerForContextMenu(lv);
return false;
}
});
ii.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i =new Intent(MainActivity.this,Main1Activity.class);
startActivity(i);
}
});
}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Select The Action");
menu.add(0, v.getId(), 1, "DELETE");
}
public boolean onContextItemSelected(MenuItem item){
String number=phnum;
if(item.getTitle()=="DELETE"){
TextView id1=(TextView) findViewById(R.id.id);
db.deleterow(id1.getText().toString());
Toast.makeText(MainActivity.this,"Task Deleted!", Toast.LENGTH_SHORT).show();
list = new ArrayList<HashMap<String,String>>();//memory allocation
list = db.getvalues();
ListAdapter ad= new SimpleAdapter(MainActivity.this, list, R.layout.custom, new String[]{"id","name"}, new int[]{R.id.id,R.id.name});
lv.setAdapter(ad);
}else{
return false;
}
return true;
}
我不打算增加從SQLiteOpenHelper類擴展DBConnector類,因爲它包含了工作,因爲正在填充數據庫的功能和項目正在被刪除,所以我不認爲這有問題。但是,如果你要我補充一點,我將這樣做,如果你要我......
這裏的custom.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
這裏的deleteRow方法即可withing的DBconnector類:
public void deleterow(String numid) {
// TODO Auto-generated method stub
SQLiteDatabase sb = this.getWritableDatabase();
String sq = "DELETE FROM user WHERE id="+numid+";";
sb.execSQL(sq);
}
另外,我需要關於如何不能在ListView中顯示id號以及名稱的建議。
請幫幫我吧!我正在爲你們所有人!
你的問題,最有可能的,是在這裏:'TextView的ID1 =(TextView的)findViewById(R.id.id);'假設這個'TextView'是一個'ListView'行,調用'findViewById( )''活動可以返回任何具有該ID的'TextView'小部件,並且每行有一個。上下文菜單已經被認爲已經過時五年了,所以我對它們如何工作的記憶是模糊的。然而,在'onContextItemSelected()'方法中有一個觸發上下文菜單的位置的方法。 – CommonsWare
有沒有其他的菜單可以用來輕鬆找到物品的位置? –