android开发--(SimpleAdapter)运用

时间:2022-07-02 03:41:27
SimpleAdapter的参数说明

    第一个参数 表示访问整个android应用程序接口,基本上所有的组件都需要
    第二个参数表示生成一个Map(String ,Object)列表选项
      第三个参数表示界面布局的id  表示该文件作为列表项的组件
      第四个参数表示该Map对象的哪些key对应value来生成列表项
    第五个参数表示来填充的组件 Map对象key对应的资源一依次填充组件 顺序有对应关系

布局和上一篇一样,还是用ListView控件,显示方式不一样,上一篇使用BaseAdapter(),这篇使用SimpleAdapter();

  效果如下

    android开发--(SimpleAdapter)运用

  代码:   

public class MainActivity extends Activity {
private ListView lv;
private SimpleAdapter mp;
//集合
private List<mess> messagetlist=new ArrayList<mess>();
private List<Map<String,Object>> messagetlist2=new ArrayList<Map<String,Object>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wei);
//循环读取数据,模仿数据库
for (int i = 0; i <50; i++) { //定义一个界面与数据的混合体,一个item代表一行记录
Map<String,Object> item=new HashMap<String,Object>();
//一行记录,包含多个控件
item.put("img",R.drawable.lad);
item.put("name","少年");
item.put("mess","过的怎么样啊");
item.put("date","11-28");
messagetlist2.add(item);
}
//查找listView1对象
lv=(ListView)findViewById(R.id.listView1);
mp=new SimpleAdapter(this,
messagetlist2,//data 不仅仅是数据,而是一个与界面耦合的数据混合体
R.layout.img,
new String[]{"img","name","mess","date"},
new int[]{R.id.imageView1,R.id.name,R.id.mess,R.id.date});
lv.setAdapter(mp); } });

  刷新Listview,这里是把少年改为青年

 lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
public void onItemClick(AdapterView<?> parment, View view, int position,
long id) {
Map<String,Object> item=messagetlist2.get(position);
item.put("name","青年");
mp.notifyDataSetInvalidated();
}

  长按Item,出现菜单栏,效果:

     android开发--(SimpleAdapter)运用

  代码:

 lv.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) {
conMenu.setHeaderTitle("操作");
conMenu.add(0, 0, 0, "标为未读");
conMenu.add(0, 1, 1, "置顶工作号");
conMenu.add(0, 2, 2, "取消关注");
conMenu.add(0,3,3,"删除该聊天");
}
});

    可以去比较下BaseAdapter()和SimpleAdapter()的用法,看下你更适用于哪一种写法。