The main challenge of massive machine-type communications (mMTC) is the joint activity and signal detection of devices. The mMTC scenario with many devices transmitting data intermittently at low data rates and via very short packets enables its modelling as a sparse signal processing problem. In this work, we consider a grant-free system and propose a detection and decoding scheme that jointly detects activity and signals of devices. The proposed scheme consists of a list detection technique, an $l_0$-norm regularized activity-aware recursive least-squares algorithm, and an iterative detection and decoding (IDD) approach that exploits the device activity probability. In particular, the proposed list detection technique uses two candidate-list schemes to enhance the detection performance. We also incorporate the proposed list detection technique into an IDD scheme based on low-density parity-check codes. We derive uplink sum-rate expressions that take into account metadata collisions, interference and a variable activity probability for each user. A computational complexity analysis shows that the proposed list detector does not require a significant additional complexity over existing detectors, whereas a diversity analysis discusses its diversity order. Simulations show that the proposed scheme obtains a performance superior to existing suboptimal detectors and close to the oracle LMMSE detector.