在嵌入的活动上与自定义列表适配器交互

时间:2013-09-27 21:59:35

标签: android android-fragments android-custom-view custom-lists

我有一个自定义列表适配器,它在片段中膨胀,并且该片段嵌入在一个活动中,我想实现一个接口来处理来自活动类的该适配器上的图像的点击..但是我得到了null指针异常..这是我的代码:

这是我的自定义适配器类的一部分:

public ActionSelection mCallBack;
public interface ActionSelection {
    public void onActionSelected(int position);
}

public View getView(int position, View convertView, ViewGroup parent) {

    View view = convertView;

    LayoutInflater inflater = (LayoutInflater) getContext().
            getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    view = inflater.inflate(R.layout.main_list_item, null);

    // Obtain current mainListItem using position
    MainListItem item = mainListItems.get(position);

    // Set the custom view
    if (item != null) {

        ((SmartImageView) view.findViewById(R.id.imageview_mainlist_profile_picture)).
                setImageUrl(item.getProfile_picture());

        ((TextView) view.findViewById(R.id.textview_mainlist_fullname)).
                setText(item.getFullname());

        ((TextView) view.findViewById(R.id.textview_mainlist_username)).
                setText(item.getUsername());

        ((ImageView) view.findViewById(R.id.imageview_mainlist_action)).
                setImageResource(item.getAction());

        ImageView action = (ImageView) (view.findViewById(R.id.imageview_mainlist_action));
        action.setId(position);

        action.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCallBack.onActionSelected(5);
            }
        });


    }


在我的MainActivity上,我使用以下代码实现了界面:

@Override
public void onActionSelected(int position) {
    Log.v("test", String.valueOf(position));
}

1 个答案:

答案 0 :(得分:0)

您永远不会将mCallBack变量设置为任何内容。例如,您可以在适配器的构造函数中传递它。