⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contactlistview.java

📁 Android平台上即时通讯聊天工具源代码。 支持手机聊天。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    public boolean isContactAtPosition(long packedPosition) {        int type = ExpandableListView.getPackedPositionType(packedPosition);        int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);        return (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD)                && !mAdapter.isPosForSubscription(groupPosition);    }    public boolean isContactSelected() {        long pos = mContactsList.getSelectedPosition();        return isContactAtPosition(pos);    }    public boolean isConversationAtPosition(long packedPosition) {        int type = ExpandableListView.getPackedPositionType(packedPosition);        int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);        return (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD)                && mAdapter.isPosForOngoingConversation(groupPosition);    }    public boolean isConversationSelected () {        long pos = mContactsList.getSelectedPosition();        return isConversationAtPosition(pos);    }    public boolean isContactsLoaded() {        try {            IContactListManager manager = mConn.getContactListManager();            return (manager.getState() == ContactListManager.LISTS_LOADED);        } catch (RemoteException e) {            mHandler.showServiceErrorAlert();            return false;        }    }    public void removeContact() {        removeContact(getSelectedContact());    }    public void removeContactAtPosition(long packedPosition) {        removeContact(getContactAtPosition(packedPosition));    }    void removeContact(Cursor c) {        if (c == null) {            mHandler.showAlert(R.string.error, R.string.select_contact);        } else {            String nickname = c.getString(c.getColumnIndexOrThrow(Im.Contacts.NICKNAME));            final String address = c.getString(c.getColumnIndexOrThrow(Im.Contacts.USERNAME));            DialogInterface.OnClickListener confirmListener = new DialogInterface.OnClickListener(){                public void onClick(DialogInterface dialog, int whichButton) {                    try {                        IContactListManager manager = mConn.getContactListManager();                        int res = manager.removeContact(address);                        if (res != ImErrorInfo.NO_ERROR) {                            mHandler.showAlert(R.string.error,                                    ErrorResUtils.getErrorRes(getResources(), res, address));                        }                    } catch (RemoteException e) {                        mHandler.showServiceErrorAlert();                    }                }            };            Resources r = getResources();            new AlertDialog.Builder(mContext)                .setTitle(R.string.confirm)                .setMessage(r.getString(R.string.confirm_delete_contact, nickname))                .setPositiveButton(R.string.yes, confirmListener) // default button                .setNegativeButton(R.string.no, null)                .setCancelable(false)                .show();            clearFocusIfEmpty(c);        }    }    public void blockContact() {        blockContact(getSelectedContact());    }    public void blockContactAtPosition(long packedPosition) {        blockContact(getContactAtPosition(packedPosition));    }    void blockContact(Cursor c) {        if (c == null) {            mHandler.showAlert(R.string.error, R.string.select_contact);        } else {            String nickname = c.getString(c.getColumnIndexOrThrow(Im.Contacts.NICKNAME));            final String address = c.getString(c.getColumnIndexOrThrow(Im.Contacts.USERNAME));            DialogInterface.OnClickListener confirmListener = new DialogInterface.OnClickListener(){                public void onClick(DialogInterface dialog, int whichButton) {                    try {                        IContactListManager manager = mConn.getContactListManager();                        int res = manager.blockContact(address);                        if (res != ImErrorInfo.NO_ERROR) {                            mHandler.showAlert(R.string.error,                                    ErrorResUtils.getErrorRes(getResources(), res, address));                        }                    } catch (RemoteException e) {                        mHandler.showServiceErrorAlert();                    }                }            };            Resources r = getResources();            new AlertDialog.Builder(mContext)                .setTitle(R.string.confirm)                .setMessage(r.getString(R.string.confirm_block_contact, nickname))                .setPositiveButton(R.string.yes, confirmListener) // default button                .setNegativeButton(R.string.no, null)                .setCancelable(false)                .show();            clearFocusIfEmpty(c);        }    }    public Cursor getContactAtPosition(long packedPosition) {        int type = ExpandableListView.getPackedPositionType(packedPosition);        if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {            int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);            int childPosition = ExpandableListView.getPackedPositionChild(packedPosition);            return (Cursor) mAdapter.getChild(groupPosition, childPosition);        }        return null;    }    public Cursor getSelectedContact() {        long pos = mContactsList.getSelectedPosition();        if (ExpandableListView.getPackedPositionType(pos)                == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {            return (Cursor)mContactsList.getSelectedItem();        }        return null;    }    public String getSelectedContactList() {        long pos = mContactsList.getSelectedPosition();        int groupPos = ExpandableListView.getPackedPositionGroup(pos);        if (groupPos == -1) {            return null;        }        Cursor cursor = (Cursor)mAdapter.getGroup(groupPos);        if (cursor == null) {            return null;        }        return cursor.getString(cursor.getColumnIndexOrThrow(Im.ContactList.NAME));    }    private void registerListeners() {        try{            IContactListManager listManager = mConn.getContactListManager();            listManager.registerContactListListener(mContactListListener);            listManager.registerSubscriptionListener(mSubscriptionListener);        }catch(RemoteException e) {            mHandler.showServiceErrorAlert();        }    }    private void unregisterListeners() {        try{            IContactListManager listManager = mConn.getContactListManager();            listManager.unregisterContactListListener(mContactListListener);            listManager.unregisterSubscriptionListener(mSubscriptionListener);        }catch(RemoteException e) {            mHandler.showServiceErrorAlert();        }    }    private final OnChildClickListener mOnChildClickListener = new OnChildClickListener() {        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,                int childPosition, long id) {            Cursor cursor = (Cursor)parent.getExpandableListAdapter().getChild(                    groupPosition, childPosition);            int subscriptionType = cursor.getInt(ContactView.COLUMN_SUBSCRIPTION_TYPE);            int subscriptionStatus = cursor.getInt(ContactView.COLUMN_SUBSCRIPTION_STATUS);            if ((subscriptionType == Im.Contacts.SUBSCRIPTION_TYPE_FROM)                    && (subscriptionStatus == Im.Contacts.SUBSCRIPTION_STATUS_SUBSCRIBE_PENDING)){                long providerId = cursor.getLong(ContactView.COLUMN_CONTACT_PROVIDER);                String username = cursor.getString(ContactView.COLUMN_CONTACT_USERNAME);                Intent intent = new Intent(ImServiceConstants.ACTION_MANAGE_SUBSCRIPTION,                        ContentUris.withAppendedId(Im.Contacts.CONTENT_URI, id));                intent.putExtra(ImServiceConstants.EXTRA_INTENT_PROVIDER_ID, providerId);                intent.putExtra(ImServiceConstants.EXTRA_INTENT_FROM_ADDRESS, username);                mScreen.startActivity(intent);            } else {                startChat(cursor);            }            return true;        }    };    static class SavedState extends BaseSavedState {        int[] mExpandedGroups;        SavedState(Parcelable superState, int[] expandedGroups) {            super(superState);            mExpandedGroups = expandedGroups;        }        private SavedState(Parcel in) {            super(in);            mExpandedGroups = in.createIntArray();        }        @Override        public void writeToParcel(Parcel out, int flags) {            super.writeToParcel(out, flags);            out.writeIntArray(mExpandedGroups);        }        public static final Parcelable.Creator<SavedState> CREATOR                = new Parcelable.Creator<SavedState>() {            public SavedState createFromParcel(Parcel in) {                return new SavedState(in);            }            public SavedState[] newArray(int size) {                return new SavedState[size];            }        };    }    @Override    public Parcelable onSaveInstanceState() {        Parcelable superState = super.onSaveInstanceState();        int[] expandedGroups = mAdapter == null ? null                : mAdapter.getExpandedGroups();        return new SavedState(superState, expandedGroups);    }    @Override    public void onRestoreInstanceState(Parcelable state) {        SavedState ss = (SavedState) state;        super.onRestoreInstanceState(ss.getSuperState());        mSavedState = ss;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -