2017-07-16 8 views
1

私はAndroidスタジオを使用してAndroidアプリケーションで作業しています。親にlistview子イベントを渡す

私はレイアウトのリストビューを持っています。これらのレイアウト内にボタンがあり、そのうちの1つが「閉じる」です。 レイアウト番号nの「閉じる」ボタンをクリックすると、レイアウト番号nを削除するようにlistviewします。

私のレイアウトのclickイベントを親に渡すために、angular2の "Output"タグのようなものがあります。

マイリストビューアダプタ:私の活動で

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

使用私はあなたがより多くの進歩とあなたが設定したテキストビュー、画像表示や何か他のもののようなListItemの中で何かを行うことができますBaseAdapterで使いやすいBaseAdapterを使うべきだと思うのonClick

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

ありがとうございます。この正確な問題を解決しますが、子供から親にイベントを送る一般的な問題はどうですか?多分それは存在しないかもしれません。 – fazega

+0

Custonアダプターでイベントを渡す方法はありませんが、引き続きリストビューをパラメーターとしてアダプターに渡してそこで管理することができます。 –

+0

ありがとうございます。 Android APIと同じくらい大きなプラットフォームには欠けているもの...私はそれを変えるためにGoogleで働かなければならないでしょう。 – fazega

0

のこの内部。

関連する問題