カスタムリスト項目(チェックボックス、アイコン、およびいくつかのテキスト)があるSherlockListFragmentがあります-正常に動作します。リストはカスタムの CursorAdapter から取り込まれ、ここで Checkbox イベントをトラップします (方向の変更によってもデータを保持できます - これも機能します)。ユーザーが 1 つ以上のチェックボックスをオンにしてアクションバー項目を表示したときに、ListFragment でイベントを発生させたいと考えています。
イベントを受け入れるためにフラグメントにインターフェースを実装しましたが、cursoradapter のチェックボックス onClick リスナーでフラグメント イベントを発生させるための構文がうまくいきません。イベントは正常にトリガーされますが、リスナーを呼び出すことはできません。使用するオブジェクト。
断片:
public class ContactListFragment extends SherlockListFragment implements
LoaderManager.LoaderCallbacks<Cursor>
{
public interface ListItemCheckedListener
{
public void OnListItemChecked(int count);
}
private SimpleCursorAdapter mAdapter;
public ListItemCheckedListener checkListener;
public void setListItemListener(ListItemCheckedListener listener)
{
checkListener = listener;
}
<snip>
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
<snip>
setListItemListener(new ListItemCheckedListener()
{
@Override
public void OnListItemChecked(int count)
{
// Turn on/off Action Bar Item
//if (count > 0)...
}
});
カーソルアダプタ:
public class ContactCursorAdapter extends SimpleCursorAdapter
{
<snip>
@Override
public void bindView(View view, Context context, Cursor cursor)
{
<snip>
CheckBox cBox = (CheckBox)view.findViewById(R.id.checkBox);
final int pos = cursor.getPosition();
cBox.setOnClickListener(new OnClickListener()
{
public void onClick(View view)
{
CheckBox cb = (CheckBox)view.findViewById(R.id.checkBox);
if (cb.isChecked())
{
itemChecked.set(pos, true);
countChecked++;
<something>.checkListener(countChecked); // <----- Umm?
}
else if (!cb.isChecked())
{
itemChecked.set(pos, false);
countChecked--;
<something>.checkListener(countChecked); // <----- ditto
}
}
});
cBox.setChecked(itemChecked.get(pos));
}
「何か」のためにあらゆる種類のオブジェクトを試しましたが、正しいオブジェクトを取得できないようです。
助けてください...!