Android listview嵌套gridview时 同时可点击

来源:互联网 发布:淘宝手机靓号 编辑:程序博客网 时间:2024/05/19 18:45

最近项目开发中 有一listview嵌套gridview 需求 一开始想简单一点 后期处理点击事件时 被绕了一把 因为listview 有内容可点击 gridview 有内容也可点击
好了 首先理一下思路 我并不是直接给listview 和 gridview 添加点击 而是给listview里面的内容添加点击 gridview 同理 这样就不存在处理listview 和 gridview点击冲突问题 我只要他们显示

废话不多说 直接上代码
第一步 重写listview 和 gridview 的onMeasure 此处只给出关键代码(以前写过 需要完整版的话可前往我的cadn查看 http://blog.csdn.net/naide_s/article/details/75174991)
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
第二步 添加xml 文件 直接给出图片list_xml 这里写图片描述
grid_xml
这里写图片描述

第三步 加载数据 (此处省略 需要可前往 http://blog.csdn.net/naide_s/article/details/75174991 查看)
重点 第四步 添加点击事件
listview部分设置点击事件
(我以前也写过一片关于 listview 的item 和item中button 同时点击 处理思路是一样的http://blog.csdn.net/naide_s/article/details/75036003)
回到本文 首先 在listview 的adapter 中 写一个点击接口 内有一个点击方法 并在adapter 中给出一个设置点击的方法 代码:
1: // listview部分的 点击接口
public interface HomeListOnClickListener{
// listview部分的点击方法
void homeListOnClickListener(int i);

}

2: //listview部分的设置点击方法
public void setHomeListOnClickListener(HomeListOnClickListener homeListOnClickListener){
this.homeListOnClickListener = homeListOnClickListener;
}
3 :在adapter中 然后给listview中需要点击得部分设置点击监听(并不是list view而是其内部需要点击得部分)
holder.listtitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, “点击了首页list”, Toast.LENGTH_SHORT).show();
if (homeListOnClickListener!=null){
homeListOnClickListener.homeListOnClickListener(position);
}
}
});
4 在activity/fragment中 设置点击
homeListAdapter.setHomeListOnClickListener(new HomeListAdapter.HomeListOnClickListener() {
@Override
public void homeListOnClickListener(int i) {
ShopList.DataBean item = (ShopList.DataBean) homeListAdapter.getItem(i);
String itemId = item.getId();
Intent intent = new Intent(getActivity(),FWShopActivity.class);
intent.putExtra(“id”,itemId);
startActivity(intent);

               }           });

gridview部分设置点击事件
和上文一样
1://gridview部分的 点击接口
public interface HomeGridItemOnClickListener{
//gridview部分的 点击方法
void homeGridItemOnClickListener(int i);
}
2://gridview部分的 设置点击的方法
public void setHomeGridItemOnClickListener(HomeGridItemOnClickListener homeGridItemOnClickListener){
this.homeGridItemOnClickListener=homeGridItemOnClickListener;
}
3://在adapter中 gridview需要点击部分设置点击
holder.gridtitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (homeGridItemOnClickListener!=null){
homeGridItemOnClickListener.homeGridItemOnClickListener(position);
}
}
});
4 此处需要在listview的adapter中 设置gridview需要部分得点击
gridViewAdapter.setHomeGridItemOnClickListener(new HomeGridViewAdapter.HomeGridItemOnClickListener() {
@Override
public void homeGridItemOnClickListener(int i) {
Toast.makeText(context, “点击了grid–”+i, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, FWContentActivity.class);
ShopList.DataBean.ServiceListBean item = (ShopList.DataBean.ServiceListBean) gridViewAdapter.getItem(position);
intent.putExtra(“id”,item.getId());
context.startActivity(intent);
}
});
到此处 就完成了 list view和gridview 同时点击 希望可以帮到你

阅读全文
0 0
原创粉丝点击