2012-01-16 118 views
0

我有一个活动,有一个按钮和一个列表视图(与chechbox,图像和文本)。在哪里执行onClickListener以及如何?

我从扩展BaseAdapter类的customAdapter类制作listview。

我正在处理该customAdapter类中的复选框。

现在我的问题是,如何知道被检查哪些项目以及如何在

是检查listItems.Because我的按钮是在活动执行动作,但我需要perfom是onClickListener在customadapter类 ??

感谢您的帮助。

+0

所以你试图记录在列表中选中哪个复选框? – 2012-01-16 17:18:29

+0

是的,我正在寻找。以及在哪里执行按钮onClickListener以及如何? – 2012-01-16 17:22:05

回答

0

您会在您的GetView()方法内部放置Button click监听器,在该方法中,您为列表中的每一行膨胀视图。

为你会做same..it会是这个样子你getview复选框项目()

CheckBox cbx = (CheckBox)view.findViewById(R.id.c_checkbox); 

    if(cbx.isChecked()){ 
     Toast.makeText(getApplicationContext(), 
       "Checked position " + position, 
       Toast.LENGTH_SHORT).show(); 
    } 
+0

如何在列表视图中为所有选中的项目执行onClickListener按钮。例如从按钮点击列表中删除所有选中的项目。 – 2012-01-16 17:34:24

+0

列表视图中每行的按钮?或者它只是一个按钮? – 2012-01-16 17:36:23

+0

顶部有1个按钮。 – 2012-01-16 17:36:49

0

你可以使用一个特制的OnItemClickListener实现OnClickListener

private class CustomAdapter extends BaseAdapter implements OnClickListener { 

    public MyAdapter() { 
     /* Your constructor */ 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.custom_row, null); 
     } 

     // take the CheckBox and set the listener. 
     CheckBox cbx = (CheckBox) convertView.findViewById(R.id.checkbox); 
     cbx.setOnClickListener(this); 

     // set the listener for the whole row. 
     convertView.setOnClickListener(new OnItemClickListener(position)); 
     return convertView; 
    } 

    @Override 
    public void onClick(View v) { 
     Log.v(TAG, "Row button clicked"); 
    } 
} 

private class OnItemClickListener implements OnClickListener{   
    private int mPosition; 

    OnItemClickListener(int position){ 
     mPosition = position; 
    } 

    @Override 
    public void onClick(View v) { 
     Log.v(TAG, "onItemClick at position" + mPosition);      
    }    
} 

}

还要注意,将作为焦点的视图列表项防止onListItemClick()点击列表项时的射击。

希望这会有所帮助。

相关问题