![](/img/trans.png)
[英]How i can have a filtered item on a listview with constant item position?
[英]How can I get the ID of the ListView Item instead of the position on the listview?
当我长按列表视图中的某个项目时,我想在数据库中获取ID;但是,当我长按and Item时,我获得该项目在列表视图中的位置,例如:Cake的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;
}
}
我建议您使用类似此页面的自定义适配器
然后在您的DataModel.java
使用private int id;
和private String name;
字段,然后是它们的构造函数和getter方法,您最终也可以在OnItemLongClickListener
添加其他字段, OnItemLongClickListener
获取项目ID并对其进行烘烤。
尝试记录itemRec。 这是对项目本身的长ID的引用。 这将产生期望的效果。 请发布您的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.