2017-07-16 82 views
1

我正在使用Android studio处理Android应用程序。将listview子项事件传递给父项

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

类似于angular2中的“Output”标记,将我的布局的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删除元素和更新适配器。

+0

显示清单查看适配器 –

+0

我添加了代码。我认为这是非常规律的,这里没有太多的幻想。 – fazega

+0

当你说删除我的布局,你的意思是删除列表视图的那一行删除整个列表视图? –

回答

0

使用此的onclick

models.remove(position); 
notifyDataSetChanged(); 
+0

非常感谢。解决这个确切的问题,但是将事件从孩子发送到父母的一般问题呢?也许它不存在。 – fazega

+0

是否无法通过custon适配器传递事件,仍然可以将listview作为参数传递给适配器并在那里管理它 –

+0

谢谢。缺乏像Android API这样的大平台......我必须在Google工作才能改变这一点。 – fazega

0

我认为你应该使用BaseAdapter是更先进的,易于BaseAdapter使用,你可以像设置文本视图,图像视图和其他任何一个ListItem做任何事里面。

相关问题