6

私はカスタムを作ろうとしていましたListView。ListViewには、RelativeLayoutとを含むwhoが含まれTextViewています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;
}

これは私のonClickListenerです:

list_quality.setOnItemClickListener(new OnItemClickListener() {

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

               //Do Something
            }
        });

onItemClickListenerTextView、Switch、または2つのオブジェクト間のスペースをクリックしても、Myは呼び出されません。スイッチを押すと、スイッチは正常に動作します(状態が変化します)。しかし、私onItemClickListenerは呼ばれていません。SwitchとTextViewを無効にしようとしましclickablefocusableが、どちらも機能しません。

setOnItemClickListerenが実行されます。

4

2 に答える 2

6

以下の行をリストビュー行のコンテナに追加します。

android:descendantFocusability="blocksDescendants"

どこに置いても、すべてのクリック可能/フォーカス可能を削除します。次に、アイテム全体を押すと、onItemClickが呼び出されます。

また、リストビュー行内のボタンもクリック可能にする場合は、リストビューアダプタのgetView()メソッド内のボタンにonClickListenerを追加します。

于 2013-01-25T14:53:18.180 に答える
3

一部のUI要素は、リストアイテムの代わりにフォーカスを取得する可能性があるため、これを使用して元に戻します

android:focusable="false"
于 2014-12-17T19:05:43.490 に答える