listview addheaderView headview的textview click事件不起作用

时间:2018-05-03 16:09:53

标签: android listview

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

myFragment中的

代码

void DrawBitmap(FT_Bitmap bm, int x, int y)
{
    SDL_Surface* glyph = SDL_CreateRGBSurfaceFrom(bm.buffer, bm.width, bm.rows, 8, bm.pitch, 0, 0, 0, 0xFF);

    SDL_Color colors[256];
    for( int i = 0; i < 256; i++)
    {
        colors[i].r = colors[i].g = colors[i].b = i;
    }
    SDL_SetPaletteColors(glyph->format->palette, colors, 0, 256);

    SDL_SetSurfaceBlendMode(glyph, SDL_BlendMode::SDL_BLENDMODE_NONE);
    SDL_Rect dest = { x, y, 0, 0 };
    SDL_BlitSurface(glyph, nullptr, target, &dest);
    SDL_FreeSurface(glyph);
}

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

2 个答案:

答案 0 :(得分:0)

您遇到的问题是,您假设标题View中的孩子ViewGroup的点击事件会收到该群组的点击事件。

事实并非如此。在您拥有的点击监听器中,View v的值只能是headerView个实例。

您想要的是将点击侦听器附加到每个标题的视图中。

headerView.findViewById(R.id.text1).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        log.d("text1");
    }
});

答案 1 :(得分:0)

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

让你的片段实现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);