未调用ListView onItemClickListener

ObA*_*bAt 6 android listview onitemclicklistener

我试图做一个习惯ListView.ListView包含一个RelativeLayout包含a TextView和a的人Switch.当您按下Switch时,Switch必须从true更改为false(反之亦然).

这是我的getView方法:

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.item_gproblem, null);

    //vi.setClickable(true); Tried this
    //vi.setFocusable(true);

    TextView txt_comment_description = (TextView) vi
            .findViewById(R.id.txt_comment_description);
    txt_comment_description.setText(MyTasks.allGComments.get(position)
            .getProblemDescription());
    //txt_comment_description.setFocusable(false); Tried this
    //txt_comment_description.setClickable(false);

    Switch switch_comment = (Switch) vi.findViewById(R.id.switch_comment);
    //switch_comment.setFocusable(false); Tried this
    //switch_comment.setClickable(false);

    //First time running getMyGComments returns a empty ArrayList
    if (MyTasks.allCustomers.get(ServerData.myID - 1).getMyGComments()
            .size() > position) {
        switch_comment.setChecked(MyTasks.allCustomers
                .get(ServerData.myID - 1).getMyGComments().get(position)
                .isProblemValue());
    }
    return vi;
}
Run Code Online (Sandbox Code Playgroud)

这是我的onClickListener:

list_quality.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

               //Do Something
            }
        });
Run Code Online (Sandbox Code Playgroud)

onItemClickListener当我点击TextView的,交换机或在两个物体之间的空间没有被调用.当我按下开关时,开关正常工作(状态改变).但我onItemClickListener没有被召唤.我试图禁用clickablefocusableSwitch和TextView,但这也不起作用.

执行setOnItemClickListeren.

Bog*_*rac 6

将下面的行添加到listview行的容器中:

android:descendantFocusability="blocksDescendants"
Run Code Online (Sandbox Code Playgroud)

从您放置它们的任何地方删除所有可点击/焦点.如果按下整个项目,则应调用onItemClick.

此外,如果您希望listview行中的按钮也可单击,请将onClickListener添加到ListView适配器getView()方法内的按钮.