ListItem onClick问题

时间:2011-07-11 14:23:12

标签: android

我有列表视图,在每个列表项中,我添加了复选框,两个 textviews imageview 。我想要的是对listitem进行点击操作,并对imageview进行单独的点击操作(位于listitem中)。
我在itemclick事件中使用了以下代码:

lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {
            CustomizeDialog customizeDialog = new CustomizeDialog(desserts.this);            // Used to show a dialog
            customizeDialog.show();
            // TODO Auto-generated method stub

        }


    });  

同时点击项目复选框已选中。因此,发生了两件事情(选中复选框并出现对话框),根据功能,这是真的。我希望当用户单击listitem复选框时选中或取消选中该复选框并且不显示任何对话框,并且当用户在相同的listitem上单击imageview时,上面只显示一个对话框,并且不选中或取消选中复选框。
我怎样才能做到这一点?请帮忙。

2 个答案:

答案 0 :(得分:0)

您需要使用适配器并在此适配器的getView()中为您的复选框和对话框设置侦听器。

请参阅:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

Update textView from an item in a custom listView Android

答案 1 :(得分:0)

将侦听器设置为getView()

例如: -

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_layout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.image1 = (ImageView) view.findViewById(R.id.image1);
viewHolder.image1.setOnClickListener(new OnClickListener(){
        @Override
        public voic onClick(View v){
             // do something here
        }
});
viewHolder.text1 = (TextView) view.findViewById(R.id.text1);
viewHolder.checkBox = (CheckBox) view.findViewById(R.id.checkbox);
viewHolder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
     @Override
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // do something
     }
});
view.setTag(viewHolder);