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时,它没有任何改变。 我该如何设置点击事件?
答案 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);