我有一个 SherlockListFragment,其中有一个自定义列表项(复选框、图标和一些文本) - 工作正常。该列表是从自定义 CursorAdapter 填充的,在这里我捕获了 Checkbox 事件(因此我也可以通过方向更改来保存数据 - 也可以)。当用户选中一个或多个复选框以显示操作栏项时,我希望能够在 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));
}
我已经为“某事”尝试了各种对象,但似乎无法完全找到正确的对象。
请帮忙...!