"Why do they spend so much on ODA? It is even higher than other northern European countries (Denmark, Norway, Ireland, and Iceland), even though they are richer per capita base."
For a large part, aid is an altruistic political goal. However, there are some pragmatic reasons for foreign aid.
Aid has a few benefits for the donor country. Development aid is supposed to increased stability, increased trade, reduce terrorism, reduce refugee crisis's etc. Aid is also a geopolitical bargaining chip.
The reason larger/richer countries give more aid is that cost of aid is proportionately low and the benefits are higher. Even if Iceland gave 50% of its GDP away ($10B), it would have a small effect on the world aid budget ($130B). And Iceland would receive only a small fraction of the benefits.
Its worth noting that the benefits of foreign aid are very hard to quantify, extremely diffuse and long term. If countries were purely motivated by self interest, then the US would give more than Sweden, so political motivations are the main driver here.