首页 > 解决方案 > listview addheaderView headview的textview点击事件不起作用

问题描述

android listview添加headerView,但是header项中textView的onclicklestener不起作用。我的英语不好。谢谢。

myFragment 中的代码

ViewGroup headerView = (ViewGroup) inflater.inflate(R.layout.item_header, list, true);
list.addHeaderView(headerView);
list.setAdapter(musicBaseAdapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            final Intent intent = new Intent(getActivity(), RedActivity.class);
            intent.putExtra("rank", position);
            startActivity(intent);

        }
    });
headerView.setOnClickListener(new ViewGroup.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.text1:
                    log.d("text1");
                    break;
                case R.id.text2:
                    log.d("text2");
                    break;
                case R.id.text3:
                    break;
                case R.id.text4:
                    break;
            }

        }
    });

当我单击 headeritem 中的 textview 时,它没有任何改变。如何设置点击事件?

标签: androidlistview

解决方案


这不是它的工作原理。如果要单独单击每个视图,则需要为每个视图设置侦听器。可以有多种方法来做到这一点。您可以尝试以下。

让你的 Fragment 实现OnClickListener。并onClick为每个项目设置。下面是一个例子。

class MFragment extends Fragment implements View.OnClickListener{

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.text1:
                log.d("text1");
                break;
            case R.id.text2:
                log.d("text2");
                break;
            case R.id.text3:
                break;
            case R.id.text4:
                break;
        }
    }
}

并设置 Listener 。

ViewGroup headerView = (ViewGroup) inflater.inflate(R.layout.item_header, list, true);
    headerView.findViewById(R.id.text1).setOnClickListener(MFragment.this);
    headerView.findViewById(R.id.text2).setOnClickListener(MFragment.this);
    headerView.findViewById(R.id.text3).setOnClickListener(MFragment.this);
    headerView.findViewById(R.id.text4).setOnClickListener(MFragment.this);
    list.addHeaderView(headerView);
    list.setAdapter(musicBaseAdapter);

推荐阅读