不是什么特别难的复杂的代码,平常“度娘”给出的答案却也不是那么的尽人意
今天又遇上了,所以自己总结一下吧
无图无真相
========Activity========
【List 1】点击跳转到百度
-----------------------------------
【List 2】点击跳转到Google
-----------------------------------
【List 3】点击跳转到微软
-----------------------------------
【List 4】点击跳转到阿里巴巴
... ...
... ...
========Activity========
功能点
点击对应的item发起对应的跳转动作
干货
Activity端
public class CircleMsgAcitvity extends BaseActivity
//【1】包含接口
implements OnItemClickListener {
... ...
... ...
//【2】实现接口
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long arg3) {
// 从Adapter中获得点击条目中数据源包含的帖子id
//★★★从Adapter中获得被点击的item的数据实体,并取出来赋值给postId
String postId = msgAdapter.getItem(position).getPostId();
// 根据postId启动对应的【帖子详情】
switch2DetailView(postId);
}
//【3】想要的动作:根据postId进行跳转
//postId可以是{百度地址,Google地址...}
private void switch2DetailView(String postId) {
Intent intent = new Intent(this, CircleActivity.class);
Bundle bundle = new Bundle();
bundle.putString("postId", postId);
intent.putExtras(bundle);
startActivity(intent);
}
//【4】接口绑定
private void initView() {
bkBtn = (Button) findViewById(R.id.btn_back);
bkBtn.setOnClickListener(this);
// 绑定数据源
msgList = (MyListView) findViewById(R.id.circle_msg_list);
msgAdapter = new CircleMsgAdapter(this);
msgList.setAdapter(msgAdapter);
//接口绑定
msgList.setOnItemClickListener(this);
}
}
Adapter端
public class CircleMsgAdapter extends BaseAdapter {
... ...
... ...
//【5】搭一个桥:让Activity可以取到Adapter中被点击item中的数据实体
@Override
//public Object getItem(int position) {
//★★★ 关键的一步,修改BaseAdapter中getItem返回的类型
//【Object】---》【CircleMsgItemInfo 】
public CircleMsgItemInfo getItem(int position) {
return mInfos.get(position);
}
... ...
... ...
}