This paper proposes energy and cross-layer aware resource allocation techniques that allow dynamic spectrum access (DSA) users, by means of learning algorithms, to locate and exploit unused spectrum opportunities effectively. Specifically, we design private objective functions for DSA users with multiple channel access and adaptive power allocation capabilities. We also propose simple two-phase heuristics for allocating spectrum and power resources among users. The proposed heuristics split the spectrum and power allocation problem into two subproblems, and solve each of them separately. The spectrum allocation problem is solved, during the first phase using learning. Two procedures to learn the channel selection are proposed and compared in terms of optimality, scalability, and robustness. The power allocation, on the other hand, is formulated as a real optimization problem and solved, during the second phase, by traditional optimization solvers. Simulation results show that energy and cross-layer awareness and multiple channel access capability improve the performance of the system in terms of the per-user average rewards received from accessing the dynamic spectrum access system. In addition, the two proposed methods for channel selection via learning represent a tradeoff between optimality, scalability, and robustness.