2017-07-16 66 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做任何事裏面。

相關問題