java - 如何获取 ListView 项的 ID 而不是列表视图上的位置?
问题描述
当我长按列表视图中的项目时,我想在数据库中获取 ID,但是当我长按和项目时,我会在列表视图中获得该项目的位置,例如:Cake has ID = 3 但它是列表中的第一个由于我删除了两个条目,现在删除函数收到的 ID 是 ID = 1
public class ViewPantry extends AppCompatActivity {
private DataBaseManager mydManager;
private ListView itemRec;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pantry);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mydManager = new DataBaseManager(ViewPantry.this);
itemRec = (ListView)findViewById(R.id.itemrec);
itemRec.setOnItemLongClickListener(new
AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView,
View view, int position, long id) {
//Toast.makeText(getApplicationContext(), a + "
selected", Toast.LENGTH_LONG).show();
removeRecs(position);
return false;
}
});
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ViewPantry.this,
MainActivity.class);
startActivity(intent);
}
});
showRec();
}
public boolean showRec() {
mydManager.openReadable();
ArrayList<String> tableContent = mydManager.retrieveRows();
//response.setText("The rows in the products table are: \n");
ArrayAdapter<String> arrayAdpt = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, tableContent);
itemRec.setAdapter(arrayAdpt);
return true;
}
public boolean removeRecs(int id) {
boolean result = mydManager.deleteRow(id);
if(result == true) {
Toast.makeText(ViewPantry.this, "Item Deleted" + id,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ViewPantry.this, "Error" + id,
Toast.LENGTH_SHORT).show();
}
showRec();
return true;
}
}
解决方案
尝试记录 itemRec。那是对项目本身的长 ID 的引用。这应该会产生预期的效果。请发布您的结果。
推荐阅读
- vb6 - VB6:如何强制光标进入文本框但释放按钮按下
- c++ - 如何在不使用套接字的情况下在 C++ 中发送 POST 请求
- android - 分支机构未跟踪 Google 广告 ID
- python - 如何在 selenium python 中递归获取类详细信息
- vba - Word VBA 宏中的内存泄漏
- java - Intent.getSerializableExtra(obj)在设置Alarm时在BroadcastReceiver的onReceive中返回null
- javascript - 如果用户在画布的透明区域中绘制,如何检测透明区域单击或?
- date - 将多行汇总到一个具有不同日期格式的单元格中
- android - android 9中是否存在停止横幅广告的问题
- python - “OLS”对象没有“摘要”属性