搜索
您的当前位置:首页正文

Android高仿微信之mvp实现(三)

来源:二三娱乐

前面说到如何使用小米的推送来实现简单的聊天系统,虽然简单实现了,但是对于你们来说想要真正的体验效果就只能跟我互动,为了解决这个缺点,我最近完善了下,增加了添加朋友的功能,这样你们就可以自己拿两个测试机互相测试。就能体验整个过程,下面还是简单的说下。

原理

添加

这里主要是输入要添加的账户号,因为我使用的是MVP模式,代码过多所以我这里把一些接口方法贴出了,具体的可以查看源码。

View

public interface AddFriendsView {
    void showSearch();

    void goneSearch();

    void jumpSearchResult(String text);

    void changeText(CharSequence text);

    void showToast(String text);
}

Presenter

public interface AddFriendsPresenter {
    void switchView(CharSequence text);

    void switchActicity(TextView searchContent, RegisterDataHelper helper);
}

因为该界面没有对应数据的操作等,只是简单的界面显示,所以没有Model

搜寻

这里也是接口

View

public interface SearchResultView {
    void succeedToFinish();

    void hideProgressDialog(ProgressDialog pd);

    void showSucceedToast();

    void showErrorToast();
}

Presenter

public interface SearchResultPresenter {
    void checkSelection(Context context, String number, View view, SearchResultAdapter mAdapter);
}

Model

public interface SearchResultModel {
    void buildDialog(Context context, String number, View view, SearchResultAdapter adapter,SearchResultModelImp.requestListener listener);
}

逻辑

下面是执行添加的主要核心代码:

@Override
    public void buildDialog(final Context context, String number, final View view,
                            final SearchResultAdapter adapter, final requestListener listener) {
        new AlertDialog.Builder(context)
                .setIcon(R.drawable.icon)
                .setTitle(R.string.dialog_tip)
                .setMessage(String.format(context.getResources().getString(R.string.dialog_message), number))
                .setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Cursor cursor = adapter.getCursor();
                        if (cursor.moveToPosition(view.getId())) {
                            String number = CursorUtils.formatString(cursor, RegisterDataHelper.RegisterDataInfo.NUMBER);
                            String regId = CursorUtils.formatString(cursor, RegisterDataHelper.RegisterDataInfo.REGID);
                            String userName = CursorUtils.formatString(cursor, RegisterDataHelper.RegisterDataInfo.USER_NAME);

                            WXDataHelper wxHelper = new WXDataHelper(context);
                            Cursor wxCursor = wxHelper.query(number, regId, userName);
                            if (wxCursor.getCount() > 0 || (number.equals(SPUtils.getString("userPhone"))
                                    && regId.equals(SPUtils.getString("regId")))) {
                                ToastUtils.showShort("你已经添加了该好友!");
                            } else {
                                //发送添加好友请求
                                pd = ProgressDialog.show(context, "添加请求中...", "请稍后...", true);
                                request(userName, number, regId, listener, cursor);
                            }
                            wxCursor.close();
                        }
                    }
                })
                .setNegativeButton(R.string.dialog_negative, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                }).show();
    }

最后看下操作效果吧

效果图

效果图

关注

怪谈时间到了
Top