我制作并显示日历的应用,当我在一天内点击时,我想要显示ListView
自定义。
我的问题是,当我使用OnCreate
中的代码时,它可以正常工作,但是当我在日历的OnItemClickListener
中使用它时,它什么也没做。
这是我的代码。感谢您的工作和帮助
for(int i = 0; i < 5; i++) {
RowItem item = new RowItem(imagesCharacter[i], imagesAnime[i], characters[i], animes[i]);
rowItems.add(item);
}
CustomListViewAdapter myAdapter = new CustomListViewAdapter(getApplicationContext(), R.layout.list_item, rowItems);
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
// TODO Auto-generated method stub
Toast toast = Toast.makeText(getApplicationContext(),
"Item" + (position + 1) + ": " + rowItems.get(position), Toast.LENGTH_LONG);
toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
}
});
如果你问,我在运行应用程序时执行ListView的findViewById。
解决方案:
我发现了问题,现在可以了。
问题是ListView是一个LinearLayout的子节点,当我执行findViewById或其他不起作用的东西时总是得到或者为空。
所以我删除了de Layout,当我的findViewById工作时。
感谢您的所有答案。
答案 0 :(得分:0)
而不是getApplicationContext()
(应尽可能避免)使用YourActivityName.this
。
答案 1 :(得分:0)
通过执行以下操作创建对活动上下文的引用:
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}
然后将上下文引用传递给OnItemClickListener
,如:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast toast = Toast.makeText(mContext, "Item" + (position + 1) + ": " + rowItems.get(position), Toast.LENGTH_LONG);
// Other codes here.
}
});