首页 > 解决方案 > 让按钮在列表视图中工作

问题描述

我是 android 新手,我的代码有点乱。我已经成功创建了一个从 item_layout.xml 扩展的列表视图。当我单击列表视图时,它完全按照我想要的方式工作。但是,在列表视图的每个项目中,我都有一个按钮,单击该按钮时,我希望删除列表中的项目。

在研究时,我发现您需要创建一个客户适配器来执行此操作,但是我在项目中已经走了这么远,我什至不知道从哪里开始。

当单击列表项时,它成功使用的此代码可以正常工作。这只是放在 Main Activity 类中

mylist.setOnItemClickListener(
    new AdapterView.OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {

        }
    }

);

我在主活动类之外使用此函数填充列表。需要这样写,因为它从数据库中获取项目,并且必须根据不同的情况调用

private void populatelistView() {
    Cursor res = userDb.getAllRows();
    String[] fromFeildnames = new String[]{ DatabaseUser.KEY_1, DatabaseUser.KEY_2};
    int[] toViewIds = new int[]{R.id.textViewNum, R.id.textViewItem};

    SimpleCursorAdapter myCursorAdaptor;
    myCursorAdaptor = new SimpleCursorAdapter(getBaseContext(), R.layout.item_layout, res, fromFeildnames, toViewIds, 0);
    //ListView mylist = (ListView) findViewById(R.id.listViewID);
    mylist.setAdapter(myCursorAdaptor);

}

我希望能够通过不改变我已经写的大部分内容来让每个项目上的按钮工作。我试过只使用以下代码。但是因为它在不同的 xml 布局中,所以它显示对项目按钮的空引用错误

delete.setOnClickListener(
    new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            View parentRow = (View) v.getParent();
            ListView listView = (ListView) parentRow.getParent();
            final int position = listView.getPositionForView(parentRow);
            Toast.makeText(getApplicationContext(), "Button " + position, Toast.LENGTH_SHORT).show();
        }
    }
);

请有人可以帮助我在不更改太多代码的情况下使按钮工作,或者给我一个关于如何添加适配器但让我的 populateListView 函数做同样事情的分步教程。

附言。我查看了很多关于列表适配器的教程,但找不到适合我特定需求的教程

标签: javaandroidxml

解决方案


推荐阅读