获取按钮以在列表视图中工作

时间:2019-04-02 12:48:08

标签: java android xml

我是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布局中,因此会显示对项目按钮的null引用错误

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函数执行相同操作的逐步教程。

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

0 个答案:

没有答案