将listview子事件传递给父级

时间:2017-07-16 01:14:27

标签: android listview

我正在使用Android工作室开发Android应用程序。

我有布局列表视图,这些布局中有按钮,其中一个是“关闭”。 当我点击布局编号n的“关闭”按钮时,我希望我的列表视图删除布局编号n。

类似于angular2中的“输出”标记,用于将布局的click事件传递给其父级。

我的listview适配器:

public class MyListViewAdapter extends ArrayAdapter<MyModel> {


    public MyListViewAdapter(Context context, List<MyModel> models) {
        super(context, 0, models);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout_for_my_component, parent, false);
        }

        convertView.findViewById(R.id.buttonClose).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //How to pass this event to my activity ?
            }
        });

        return convertView;
    }
}

在我的活动中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //blablabla before

    listView = (ListView)findViewById(R.id.mylistview);
    list_models = new ArrayList<MyModel>();

    //Add some models

    adapter = new CreditCardListViewAdapter(MyActivity.this, list_models);
    listView.setAdapter(adapter);

    //blablabla after
}

所以我希望在调用onClick()时,我从list_models中删除元素并更新适配器。

2 个答案:

答案 0 :(得分:0)

在onClick

中使用此功能
models.remove(position); 
notifyDataSetChanged();

答案 1 :(得分:0)

我认为你应该使用在BaseAdapter中更先进和易用的BaseAdapter,你可以在列表项目中做任何事情,比如设置文本视图,图像视图等等。