Android (ListActivity、Contextmenu)微信类消息置顶和删除和功能的实现
代码中继承ListActivity,自定义一个布局。
代码如下:
package com.example.ContextMenudemo2;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends ListActivity {
private ArrayAdapter adapter = null;
private ArrayList<String> list = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
list = new ArrayList<String>();
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,list);
for(int i = 1;i<40;i++){
list.add("微信消息测试"+i);
}
this.setListAdapter(adapter);
ListView lv = this.getListView();
lv.setOnCreateContextMenuListener(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(0, 1001, 1, "标记为未读");
menu.add(0, 1002, 1, "置顶聊天");
menu.add(0, 1003, 1, "删除该聊天");
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int pos = info.position;
int id = item.getItemId();
if(id==1003){
list.remove(pos);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "已删除", Toast.LENGTH_SHORT).show();
}
if(id==1002){
String s = list.get(pos);
list.remove(pos);
list.add(0, s);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "置顶成功", Toast.LENGTH_SHORT).show();
}
return super.onContextItemSelected(item);
}
}