カスタムListViewからActivityへの通知 | CustomListView to Activity | Android

カスタムリストビューを利用していると、Activityへ何らかの通知を行いたいと考える時があります。

例えばリストビューのチェックした項目の一括削除、又は個数をカウントする際などに利用します。

方法としては、カスタムリストビュー側にトリガーを設置してアクティビティー側で取得する。ということになります。

スポンサーリンク

CustomListView

ではまず、カスタムリストビュー側です。以下のように対象となるビューについてトリガーを設置します。

childHolder.editLinear.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
          ((ListView)parent).performItemClick(view, position, R.id.editLinear);
     }
});

performItemClickの3つ目の引数には対象idを指定します。こうすることで、position番号のeditlinearのタップをActivityに通知することができるようになります。

実際にはR.id.editLinearの部分はview.getId()で構いません。

Activity

次に受け取り側であるActivityに受け取りを設置します。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
         if(view.getId()==R.id.editLinear){
             Log.d("Log0",i+"'s editLinear is tapped"); 
             // edit function for i;
         }
});

edit function for i に必要な処理コードを実装してください。