package net.dev123.yibo.service.listener; import net.dev123.mblog.entity.User; import net.dev123.yibo.EditDirectMessageActivity; import net.dev123.yibo.ProfileActivity; import net.dev123.yibo.R; import net.dev123.yibo.service.adapter.AdapterUtil; import net.dev123.yibo.service.adapter.CacheAdapter; import net.dev123.yibo.service.task.GroupMemberUnfollowTask; import android.content.Context; import android.content.Intent; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; import android.view.View; import android.view.View.OnCreateContextMenuListener; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.ListView; public class UserContextMenuListener implements OnCreateContextMenuListener { private ListView lvUser; private int position; public UserContextMenuListener(ListView lvUser) { this.lvUser = lvUser; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { final AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; Adapter adapter = lvUser.getAdapter(); this.position = info.position; User user= (User)adapter.getItem(position); if (user == null) { return; } Context context = v.getContext(); analyzeUserMenu(adapter, user, menu, context); } private void analyzeUserMenu(final Adapter adapter, final User user, ContextMenu menu, final Context context) { menu.setHeaderTitle(R.string.menu_title_blog); int order = 0; MenuItem commentMenu = menu.add(0, 1, order++, R.string.menu_group_member_user_profile); Intent commentIntent = new Intent(context, ProfileActivity.class); commentIntent.putExtra("USER", user); commentMenu.setIntent(commentIntent); MenuItem unfollowMenu = menu.add(0, 2, order++, R.string.menu_group_member_unfollow); unfollowMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { CacheAdapter<User> cacheAdapter = (CacheAdapter<User>)AdapterUtil.getCacheAdapter(adapter); GroupMemberUnfollowTask task = new GroupMemberUnfollowTask(cacheAdapter, user); task.execute(); return false; } }); MenuItem messageMenu = menu.add(0, 2, order++, R.string.menu_group_member_message); Intent messageIntent = new Intent(context, EditDirectMessageActivity.class); messageIntent.putExtra("DISPLAY_NAME", user.getDisplayName()); messageMenu.setIntent(messageIntent); } }