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


    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 이런 리스트들을 각각 클릭했을 때 각각 새 액티비티 창이 뜨게 하고싶습니다. 도와주시면 감사드리겠습니다

  • 2016년 04월 21일에 작성됨

조회수 545


1 답변


좋아요
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);
}
  • 2016년 04월 21일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close