(코드있습니다)fragment하나 안에 listview.. 리스트뷰 아이템 각각 클릭했을 때 각각 다른 액티비티를 뜨게 하려면 어떻게 할까요?(초보)

조회수 5989회
    static final String[] LIST_MENU = {"★ 예체능관련분과", "동아리List2", "동아리List3","동아리List4","동아리List5","★ 문학관련분과","동아리List7","동아리List8","동아리List9","동아리List10","★ 봉사분과","동아리List12","동아리List13","동아리List14","동아리List15"} ;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.social_layout, null);
        ArrayAdapter Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, LIST_MENU);

        ListView listview = (ListView) view.findViewById(R.id.listView);
        listview.setAdapter(Adapter);
        return view;

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
        adapterView.getItemAtPosition(pos);
        if (LIST_MENU == null) {
            Intent intent = new Intent(getActivity(), List1.class);
            startActivity(intent);
        }
    }
});  //이부분이 );를 쓰면 빨간색 밑줄로 에러가 뜨네요. 이것도 해결좀 부탁드립니다.
    }

}

이런식으로 코딩이 되어있는 상태인데요. 어떤 식으로 저기 if 절을 사용해서 해야하는지 잘 모르겠습니다. ㅠㅠ 저기 위에 동아리리스트1, 동아리리스트2 이런 리스트들을 각각 클릭했을 때 각각 새 액티비티 창이 뜨게 하고싶습니다. 도와주시면 감사드리겠습니다

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 에러난 부분만 고치면 다음과 같이 되겠네요.

    static final String[] LIST_MENU = {"★ 예체능관련분과", "동아리List2", "동아리List3","동아리List4","동아리List5","★ 문학관련분과","동아리List7","동아리List8","동아리List9","동아리List10","★ 봉사분과","동아리List12","동아리List13","동아리List14","동아리List15"} ;
    
     @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.social_layout, null);
            ArrayAdapter Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, LIST_MENU);
    
            ListView listview = (ListView) view.findViewById(R.id.listView);
            listview.setAdapter(Adapter);
            // return view;  이부분을 끝으로 옮기세요.
            // return 다음에는 어떠한 코드도 실행되지 않습니다. 따라서 오류라 다음 줄이 보고된것입니다.
    
            listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
                    adapterView.getItemAtPosition(pos);
                    if (LIST_MENU == null) {
                        Intent intent = new Intent(getActivity(), List1.class);
                        startActivity(intent);
                    }
                }
            }); . // 이문장은 함수 선언이 아니라 함수를 호출하는 부분입니다.
           return view; // 따라서 이곳으로 return 이 와야 합니다.
        }
    

    return 문의 위치때문에 발생한 에러입니다.

    그리고, 배열 LIST_MENU에서 현재 선택된 item위 index가 int pos 인자입니다.

    여러가지 방법이 있는데, 간단한 방법을 알려드리면 다음과 같이 해보세요.

    static final String[] LIST_MENU = { ... }
    static final Class<?>[] ACTIVITIES = { ActivityA.class, ActivityB.class, ...} // 각각의 LIST_MENU의 원소에 대응되는 액티비티의 각 클래스 이름을 써줍니다. 
    
    public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
        Intent intent = new Intent(getActivity(), ACTIVITIES[pos]);
        startActivity(intent);
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)