2014-08-29 26 views
0

我已經制作了應用程序並顯示日曆,當我在一天中點擊時,我想顯示ListView自定義。爲什麼我的代碼在OnCreate中工作,但不在OnItemClickListener中

我的問題是,當我使用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當我運行該應用程序。

SOLUTION:

我發現問題,現在它的工作原理。

問題是,ListView是一個LinearLayout的孩子,當我做了findViewById或者其他沒有工作的東西的時候總是得到或者爲null。

所以我刪除de佈局,當我做我的findViewById工作。

謝謝你的所有答案。

+0

就刪除此行toast.setGravity(Gravity.BOTTOM |重力.CENTER_HORIZONTAL,0,0);然後再試一次。 – Piyush 2014-08-29 13:13:20

回答

0

而不是getApplicationContext()(應儘可能避免)使用YourActivityName.this

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. 
    } 
}); 
相關問題