(코드있습니다)fragment하나 안에 listview.. 리스트뷰 아이템 각각 클릭했을 때 각각 다른 액티비티를 뜨게 하려면 어떻게 할까요?(초보)
조회수 5911회
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); }
댓글 입력