繁体   English   中英

如何获取ListView项的ID,而不是ListView上的位置?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM