首页 > 解决方案 > 如何获取 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;
        }

    }

标签: javaandroid

解决方案


尝试记录 itemRec。那是对项目本身的长 ID 的引用。这应该会产生预期的效果。请发布您的结果。


推荐阅读