我有片段ListView,比方说MyListFragment和自定义CursorAdapter.我onClickListener在此适配器中设置列表行中的按钮.
public class MyListAdapter extends CursorAdapter {
public interface AdapterInterface {
public void buttonPressed();
}
...
@Override
public void bindView(final View view, final Context context, final Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
...
holder.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// some action
// need to notify MyListFragment
}
});
}
}
public MyListFragment extends Fragment implements AdapterInterface {
@Override
public void buttonPressed() {
// some action
} …Run Code Online (Sandbox Code Playgroud) 我正在使用RecyclerView列出一些文本,现在我想这样做,以便当用户点击文本时弹出自定义警报对话框.
到目前为止我已尝试过这个但是得到一个NullPointerException; 这可能有什么问题?
public class CBAdapter extends RecyclerView.Adapter<CBAdapter.ViewHolder> {
List<AdapterData> mItems;
public CBAdapter() {
super();
mItems = new ArrayList<>();
AdapterData data = new AdapterData();
data.setTextOne("Many Bows");
mItems.add(data);
data = new AdapterData();
data.setTextOne("Pardon");
mItems.add(data);
data = new AdapterData();
data.setTextOne("Fall To Knees & Beg");
mItems.add(data);
data = new AdapterData();
data.setTextOne("Backflips");
mItems.add(data);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.test3, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
AdapterData …Run Code Online (Sandbox Code Playgroud) 我有ListFragment一个定制适配器.
从适配器我onClick从行中定义的按钮获取事件.在onClick方法中我得到一些id,我想传递ListFragment给做一些东西.
如何ListFragment在适配器中调用showTask方法?
listfragment
public class TaskListFragment extends ListFragment{
/* ... */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new TaskListAdapter(getActivity(), data);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setListAdapter(mAdapter);
}
public void showTask(long id) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
TaskFragment taskFragment = new TaskFragment();
Bundle args = new Bundle();
args.putLong("id", id);
taskFragment.setArguments(args);
ft.replace(R.id.fragment_container, taskFragment);
ft.commit();
}
}
Run Code Online (Sandbox Code Playgroud)
适配器
public class TaskListAdapter extends ArrayAdapter<Task>{
/* ... */ …Run Code Online (Sandbox Code Playgroud)