2014-08-29 3 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(); 
     } 

    }); 

Если вы спросите, я сделать findViewById в ListView, когда я запустить приложение.

РЕШЕНИЕ:

Я нашел эту проблему, и теперь он работает.

Проблема заключалась в том, что ListView был дочерним элементом LinearLayout и всегда получил или Null, когда я сделал findViewById, или что-то еще, что не работало.

Итак, я удаляю Layout и когда я работал над findViewById.

Благодарим за ответы.

+0

Просто удалить эту строку toast.setGravity (Gravity.BOTTOM | тяжести .CENTER_HORIZONTAL, 0, 0); и попробуй еще раз. – Piyush

ответ

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. 
    } 
});