ArrayList<String> choiceArr;
위와 같이 전역으로 선언하셨는데
onCreate 안에서 다시 선언하셨네요
final ArrayList<String>choiceArr =
new
ArrayList<String>();
따라서, 지금 소스에는 choiceArr 이 2개 존재하는건데요
전역변수 choiceArr / onCreate 안에서 사용가능한 지역변수 choiceArr
지역변수 choiceArr에는 값을 할당해주셨지만
전역변수 choiceArr은 선언만 되어 있고 비어있지요
onClick 안에 있는
choiceArr 는 전역변수로 선언된 녀석을 참조할테니
이름없는 답변자분 말씀처럼 널 값이 들어있죠
결론은 onCreate 안에 재 선언하지마시고 아래와 같이 해주세요
choiceArr = new
ArrayList<String>();