fragment 중 하나 안에서 listview를 구현했는데요. 클릭했을 때 다른 액티비티를 뜨게 하려면 어떻게 하나요?(초보)

조회수 5552회

fragment 중 하나 안에서 listview를 구현했는데요. 클릭했을 때 다른 액티비티를 뜨게 하려면 코드를 어떻게 해야하나요? 초보입니당 도움부탁드립니다...

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View v, int position, long id) {

        }
    }) ;

이걸 넣어서 쓰면 fragment 안에서랑 이 방식이 달라서 오류가 생기구요.... 도와주세요ㅠㅠ

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

3 답변

  • 댓글보고 내용 추가합니다.

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
        adapterView.getItemAtPosition(pos); 
        // 이런식으로 클릭한 아이템을 가져올 수 있습니다.  리스트뷰에 어떤 자료구조형태로 아이템을 만들었는지는 모르겠지만 해당아이템을 가져와서 체크하고 각조건에 맞는 액티비티를 if문이나 case절로 분기를 만들어 액티비티를 호출하면 되겠네요. 
                }
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 아래 글에 제 프레이그먼트 자바파일 올렸습니다. 도움부탁드려요 ㅠㅠ 알 수 없는 사용자 2016.4.21 19:38
  • 적어주신 코드 그대로 쓰면 되는데요. Fragment에 있는 listview를 가져와서 listview에 setOnItemClickListener를 달고 onItemClick 함수안에서

    Intent intent=new Intent(getActivity(), 호출하려는액티비티.class);
    startActivity(intent);
    

    하시면됩니다. 오류가 생긴다는게 어떤 오류인지 오류로그를 보여주시면 뭐가 문제인지 알수있을것 같아요.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 리스트뷰 코드를 쓴 프레이그먼트 자바파일에 작성하는거 맞죠..? 알 수 없는 사용자 2016.4.20 13:46
    • 리스트뷰 내용 하나하나 클릭할때마다 다른 액티비티 뜨게하려면 어떻게해야할까요 알 수 없는 사용자 2016.4.20 13:47
  • public class SocialFragment extends Fragment {
        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 이런 리스트들을 각각 클릭했을 때 새 액티비티 창이 뜨게 하고싶습니다. 도와주시면 감사드리겠습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • LIST_MENU StringArray에 있는 이름에 매칭되는 Class 이름이 있는 배열을 만드시는게 좋을 것 같은데요 static final String[] LIST_MENU_ACTIVITY = {"AMP.class","Circle2.class".......}; 이런식으루요 그러고나서public void onItemClick(AdapterView> adapterView, View view, int pos, long l) { adapterView.getItemAtPosition(pos); if (LIST_MENU == null) { Intent intent = new Intent(getActivity(), LIST_MENU_ACTIVITY[pos]); startActivity(intent); } } 알 수 없는 사용자 2016.5.18 08:56

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

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

(ಠ_ಠ)
(ಠ‿ಠ)