前面项目中导入了SwipeMenuListView三方库,接下来就进行使用。相较于普通listview,只是多了配置左滑过来的按钮以及它的监听。
1.设置左滑按钮,并配置在listview上。
//设置左滑按钮
SwipeMenuCreator creator=new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem openItem = new SwipeMenuItem(Address_book.this);
openItem.setBackground(new ColorDrawable(Color.RED));
openItem.setWidth(dp2px(90));
openItem.setTitle("删除");
openItem.setTitleSize(20);
openItem.setTitleColor(Color.WHITE);
menu.addMenuItem(openItem);
}
};
listview.setMenuCreator(creator);
2.创建数据和适配器,与列表匹配
//从数据库获取数据
mlist=friendManageDb.getAllFriend();
for (int i = 0; i < mlist.size(); i++) {
Map<String,Object>map=new HashMap<>();
map.put("name", mlist.get(i).getName());//显示好友名字
map.put("mailID", mlist.get(i).getMailID());//显示好友邮箱账号
mStringList.add(map);
}
//初始化适配器
listAdapter=new SimpleAdapter(Address_book.this,
mStringList,
R.layout.item1,
new String[]{"name","mailID"},
new int[]{R.id.add_name,R.id.add_address});
//返回主线程操作listview
runOnUiThread(new Runnable() {
@Override
public void run() {
listview.setAdapter(listAdapter);//listview与适配器联系起来
}
});
3.设置列表item的监听
/**
* 列表点击事件
*/
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
// TODO Auto-generated method stub
try{
Map<String,Object> map=new HashMap<>();
map=mStringList.get(position);//得到该位置的联系人
List valueList = new ArrayList(map.values());//获取map中的值,由于mailID保存在第二个位置,所以是get(1)
Intent intent=new Intent();
intent.putExtra("mailID",valueList.get(1).toString());
intent.putExtra("isfriend",true);
intent.setClass(Address_book.this,Write_mail.class);
startActivity(intent);
}catch(Exception e){
e.printStackTrace();
}
}
});
4.设置左滑按钮的监听
/**
* 监听事件,是滑动的那个按钮监听,不是列表监听
*/
listview.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
//index的值就是在SwipeMenu依次添加SwipeMenuItem顺序值,类似数组的下标。
//从0开始,依次是:0、1、2、3...
switch (index) {
case 0:
Map<String,Object> map=new HashMap<>();
map=mStringList.get(position);//得到该位置的联系人
List valueList = new ArrayList(map.values());//获取map中的值,由于mailID保存在第二个位置,所以是get(1)
String mailID=valueList.get(1).toString();
//由于访问数据库所以使用线程
new Thread(new Runnable() {
@Override
public void run() {
int success=friendManageDb.delectFriend(mailID);
if(success==0){
Message msg=new Message();
msg.what=0;
handler.sendMessage(msg);
}
else{
Message msg=new Message();
msg.what=1;
handler.sendMessage(msg);
}
}
}).start();
break;
}
return false;
}
});