如何在Android ListView的标题栏上调用点击事件?

6
我创建了一个列表视图,并通过使用 addHeaderview(layout) 添加了一个标题,然后编写了一个点击事件,如下所示:
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 
        View itemView = inflater.inflate(R.layout.buypwr, null);
itemView.setOnClickListner(new OnClickListner(){

@Override
public void onClick(View v){
}

但是当我点击标题时,这个 onClick 事件没有触发,有谁能告诉我如何解决我的问题?

5个回答

4

just try this..

itemView.setOnClickListner(new View.OnClickListner()
{
   @Override
   public void onClick(View v)
   {
   }
}

如果您在buypwr.xml中有TextView,请尝试以下操作。
TextView txt = (TextView)itemView.findViewById(......);
txt.setOnClickListner(new View.OnClickListner()
    {
       @Override
       public void onClick(View v)
       {
       }
    }

不,仍然无法触发事件。 :( - nag
如果您的标题中有任何TextView、Button或ImageView,则需要找到该视图并在其上应用onClick。 - Niranj Patel
是的!非常感谢,现在它可以工作了,我也使用了Collections.sort(list),但它并没有对字符串数组进行排序,请问有什么问题吗? - nag
我尝试过这样做:list.invalidateViews(); 它可以工作,但是当我再次点击它时,如何恢复原始视图? - nag
你需要再次设置适配器,而不调用Arrays.sort(COUNTRIES)。 - Niranj Patel
显示剩余8条评论

4
如果您想要可点击的标题作为基本列表项,可以使用ListView进行充气。
LayoutInflater inflater = LayoutInflater.from(mContext)
mListView.addHeaderView(inflater.inflate(R.layout.list_item_header, mListView, false));
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //parent.getItemAtPosition(position)
            //Prepare to get it at position == 0
        }
    });

headerview 只能选择一次...使用您的建议,您能解释一下为什么吗? - Yogesh Seralia

3

我的解决方法:

在将标题视图填充后,添加到列表视图之前,我使用该视图获取子视图并在其上添加单击侦听器

myHeaderView.findViewById(R.id.myButton).setOnClickListener(new OnClickListener() { ... } );

另外,当我将它添加到listView中时,我使用了带有第三个变量设置为true的重载构造函数。

mListView.addHeaderView(myHeaderView, null, true);

0

如果您没有任何特定的小部件(按钮等)可以具有侦听器,您可以通过调用onItemClickListener()在位置0获取您的标题,就像@Nicoloas所说的那样,因为它是第一个项目。您甚至可以为您的标题视图设置特定的ID,并通过调用view.getId()在onItemClickListener()中访问它。如果有其他问题,请告诉我。


0

使用 setOnItemClickListener 为列表设置点击事件,并实现自定义的 OnItemClickListener 以满足您的需求。

android.widget.AdapterView.setOnItemClickListener(OnItemClickListener listener)


不,我正在为我的ListView中用作标题的视图实现点击事件,而这个视图没有任何Onitemclicklistner。 - nag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接