カスタムリストビューを利用していると、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 に必要な処理コードを実装してください。