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


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

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

        }
    }) ;

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

  • 2016년 04월 19일에 작성됨

조회수 707


3 답변


좋아요
1
싫어요
채택취소하기

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

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
    adapterView.getItemAtPosition(pos); 
    // 이런식으로 클릭한 아이템을 가져올 수 있습니다.  리스트뷰에 어떤 자료구조형태로 아이템을 만들었는지는 모르겠지만 해당아이템을 가져와서 체크하고 각조건에 맞는 액티비티를 if문이나 case절로 분기를 만들어 액티비티를 호출하면 되겠네요. 
            }
  • 2016년 04월 20일에 작성됨
    안드로이드, 루비온레일즈

  • 아래 글에 제 프레이그먼트 자바파일 올렸습니다. 도움부탁드려요 ㅠㅠ    Jaceis   2016.4.21 19:38     

적어주신 코드 그대로 쓰면 되는데요. Fragment에 있는 listview를 가져와서 listview에 setOnItemClickListener를 달고 onItemClick 함수안에서

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

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

  • 2016년 04월 20일에 작성됨
    안드로이드, 루비온레일즈

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

  • 2016년 04월 21일에 작성됨

  • 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); } }    dot2line   2016.5.18 08:56     

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

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