코드 내부에서 view.findViewById(R.id.button1);으로 작성하면 View 내부의 button1이란 아이디를 가진 Button 객체를 얻을수 있을거 같습니다.
오류의 문제는 선택된 뷰에서 Button 객체를 가져와야하는데 아이디로만 객체를 가져오기 때문에 혼선이 생기는 거라 생각합니다.
EX)
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
Button button = (Button) view.findViewById(R.id.button1);
나머지 그대로
}