NutzCN Logo
问答 fragment切换的时候 里面的listview 的headview中view 绑定的click事件失效
发布于 3308天前 作者 qq_da1acd8f 2938 次浏览 复制 上一个帖子 下一个帖子
标签: android

有4个fragment fragment之间的切换添加 用 add show hide 来切换。
这里有个一个listview 里面添加了2个headview 在headview的子元素添加onclick事件无效 求解。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = getView();
if (null == view) {
view = inflater.inflate(R.layout.dinneractivity_main, container, false);
ViewUtils.inject(this, view); //注入view和事件
mOperator = new Operator();
super.onCreateView(inflater, container, savedInstanceState);
Tapplication.pullToRefreshListViewMain = pullToRefreshListView;
AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT);
if (null == adView) {
adView = inflater.inflate(R.layout.home_ad, pullToRefreshListView, false);//首页征集host
mHomeAdClose = (ImageView) adView.findViewById(R.id.home_ad_close);
mHomeAdFrame = (FrameLayout) adView.findViewById(R.id.home_ad_frame);
mHomeAd = (ImageView) adView.findViewById(R.id.home_ad_img);
adView.setLayoutParams(layoutParams);
pullToRefreshListView.getRefreshableView().addHeaderView(adView);
if (HXPreferenceUtils.getInstance().getHomeAdIsShow()) {
mHomeAdFrame.setVisibility(View.VISIBLE);
} else {
mHomeAdFrame.setVisibility(View.GONE);
}
}
//tab切换
if (null == tabView) {
tabView = inflater.inflate(R.layout.home_tab, pullToRefreshListView, false);//首页tab
mChoice = (TextView) tabView.findViewById(R.id.hom_ad_choice);
mChoiceLine = (TextView) tabView.findViewById(R.id.hom_ad_choice_line);
mChoiceEn = (TextView) tabView.findViewById(R.id.hom_ad_choice_text);
mHot = (TextView) tabView.findViewById(R.id.hom_ad_hot);
mHotLine = (TextView) tabView.findViewById(R.id.hom_ad_hot_line);
mHotEn = (TextView) tabView.findViewById(R.id.hom_ad_hot_text);
mTabRt = (RelativeLayout) tabView.findViewById(R.id.home_ad_tab_rt);
mTabChoiceRt = (RelativeLayout) tabView.findViewById(R.id.hom_ad_choice_rt);
mTabHotRt = (RelativeLayout) tabView.findViewById(R.id.hom_ad_hot_rt);
tabView.setLayoutParams(layoutParams);
pullToRefreshListView.getRefreshableView().addHeaderView(tabView);
}
getCache();
}
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null) {
parent.removeView(view);
}
setView(view);
headViewClick();//onclick事件
return view;
}

private void headViewClick() {
    View.OnClickListener clickL = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.home_ad_close:
                    HXPreferenceUtils.getInstance().setHomeAdIsShow(false);
                    mHomeAdFrame.setVisibility(View.GONE);
                    break;
                case R.id.home_ad_img:
                    startActivity(new Intent(getActivity(), HomeAdAcitivity.class));
                    break;
                case R.id.hom_ad_choice_rt:
                    ((MainFragmentActivity) getActivity()).topTabSelecte(1);
                    break;
                case R.id.hom_ad_hot_rt:
                    ((MainFragmentActivity) getActivity()).topTabSelecte(2);
                    break;
            }
        }
    };
    mTabChoiceRt.setOnClickListener(clickL);
    mTabHotRt.setOnClickListener(clickL);
    mHomeAdClose.setOnClickListener(clickL);
    mHomeAd.setOnClickListener(clickL);
}
5 回复

还有就是 进取不会触发 但是 滑动一下view 刚才的事件就会触发。

@qq_da1acd8f 完全看晕

来自炫酷的 NutzCN

就是在listview加了个headview 在headview 中的子view 上加了一个点击事件 没反应。
fragment 用的add 、hide、show 切换。不会每次都createview

headview 添加1个以上的headview 的时候 第二个headview 的中子元素的click事件会无效。
也不是绝对无效。至少我遇到的是 在不滑动listview 的情况下第二个headview的子view的事件不会立即响应。 更奇怪的是 当你滑动listview的时候 你刚才的点击不管几次 都会全部响应。
第一个headview不受影响。
不知道是listview本身的bug还是什么。。至少我遇到事这样的。

添加回复
请先登陆
回到顶部