Button Click排队,除非滚动,否则不会被触发

时间:2014-01-10 14:24:22

标签: android listview android-listview commonsware-cwac

您好我正在尝试将MergeAdapter用于我的ListView。我将ArrayAdapter添加为第一个子适配器,将按钮添加为第二个子适配器。现在OnItemClick on ArrayAdapter工作得很好,但我无法点击按钮。如果我点击它4-5次,则点击排队并在滚动列表视图时被触发。

这就是我的代码 -

    adapter = new TransactionAdapter(this, R.layout.transaction_list_item,
            transactionData);

    mergeAdapter = new MergeAdapter();

    loadMoreButton = new Button(this);
    loadMoreButton.setText(getString(R.string.button_load_more));
    loadMoreButton.setTextColor(Color.BLACK);
    loadMoreButton.setGravity(Gravity.CENTER);


    loadMoreButton.setBackgroundDrawable(null);
    loadMoreButton.setPadding(10, 10, 10, 10);
    loadMoreButton.setFocusable(false);
    loadMoreButton.setFocusableInTouchMode(false);

    loadMoreButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            AppManager.getInstance().getStartCal().add(Calendar.MONTH, -1);
            loadTransactions();
        }
    });

    mergeAdapter.addAdapter(adapter);
    mergeAdapter.addView(loadMoreButton);
    listView.setAdapter(mergeAdapter);

我可以实时触发点击,而无需等待ListView滚动。

2 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题,并找到了一个解决方案,它如何与MergeAdapter#addView()一起使用。添加时必须明确启用视图:mMergeAdapter.addView(view, true);。这最终解决了我的问题。

答案 1 :(得分:0)

正如CommonsWare所建议的,我创建了第二个只返回按钮的适配器。这解决了这个问题。所以我猜你不应该对任何交互式视图使用MergeAdapter#addView()方法。而只是使用另一个适配器。