您好我正在尝试将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滚动。
答案 0 :(得分:1)
我遇到了完全相同的问题,并找到了一个解决方案,它如何与MergeAdapter#addView()
一起使用。添加时必须明确启用视图:mMergeAdapter.addView(view, true);
。这最终解决了我的问题。
答案 1 :(得分:0)
正如CommonsWare
所建议的,我创建了第二个只返回按钮的适配器。这解决了这个问题。所以我猜你不应该对任何交互式视图使用MergeAdapter#addView()
方法。而只是使用另一个适配器。