在我的Android应用程序中,我有一个扩展ListActivity
的类,该类本身是一个列表。 (该应用程序是一个待办事项列表)。
我想在列表顶部添加一个静态标题(图像),该标题将随列表一起滚动。当我使用addHeaderView(imageView, null, false)
时,将显示该图像,但无法按预期工作:它将是可单击的并执行第一个列表项的操作。实际的第一个列表项执行第二个列表项的功能,依此类推。
知道为什么会这样,我该怎么解决?
这是我的onCreate()
函数代码:
private ListView lv;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lv = getListView();
ImageView im = new ImageView(this);
im.setBackgroundResource(R.drawable.android_robot);
lv.addHeaderView(im, null, false);
refreshList();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
goToTasks(String.valueOf(getListAdapter().getItem(position)));
}
});
lv.setCacheColorHint(0);
lv.setBackgroundColor(0xFFFFFFFF);
registerForContextMenu(lv);
int[] colors = {0x00FF9900, 0xAAFFCC00};
lv.setDivider(new GradientDrawable(Orientation.LEFT_RIGHT, colors));
lv.setDividerHeight(2);
}
和我的
Adapter
的代码(这在refreshList()
方法中):ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, populateList());
setListAdapter(adapter);
注意:
populateList()
方法返回一个String
数组,如上面的代码所示,该数组设置为Adapter
。如果需要更多代码或屏幕截图,请在评论中提问。
在此先感谢您的帮助!
编辑:
我刚刚找到了一个临时解决方案:只需在
-1
之后添加position
,goToTasks(String.valueOf(getListAdapter().getItem(position)));
会起作用,但这并不能回答发生这种情况的真正原因。
最佳答案
尽量不要无故多次调用getListView()。只需在开头输入此ListView lv = getListView();
,然后使用lv填充列表,设置侦听器并添加标题视图。
希望这有效!