차일드 expandable리스트뷰 각각이 클릭이 되게 하고 싶습니다.(Inside fragment)
조회수 1704회
우선 권태환님 도움으로(감사드립니다..꾸벅) 클릭이벤트를 적용시키긴했으나 아직 각각 다르게 클릭이 가능하게는 못하겠어서 질문 재차 올립니다 ㅠㅠ
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
groups = new String[]{};
children = new String[][]{
};
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_lineup, container, false);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
lv = (ExpandableListView) view.findViewById(R.id.expListView);
}
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private final LayoutInflater inf;
private String[] groups;
private String[][] children;
public ExpandableListAdapter(String[] groups, String[][] children) {
this.groups = groups;
this.children = children;
}
@Override
public int getGroupCount() {
return groups.length;
}
@Override
public int getChildrenCount(int groupPosition) {
return children[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return children[groupPosition][childPosition];
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inf.inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.lblListItem);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
토스트 넣어진 부분에 어떤식으로 코딩을 넣어야 Children 각 항목별로 다르게 클릭이 될까요? 각각 다른 인터넷 주소 링크를 걸고 싶습니다. 현재는 모든 children 아이템 부분에 같은 토스트가 출력이 되는 상태입니다. 도움부탁드립니당 ㅠㅠ!
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
Adapter에 넘기는 모델을 다음과 같이 작성하셨는데요.
groups = new String[]{"운동", "학술", "봉사", "종교","공연", "방송, 신문","농활"}; children = new String[][]{ {"a","b","c","d"}, {"ㄱ","ㄴ","ㄷ","d","ddd","hahahaha"}, {"ㄹ","ㅁ","ㅂ","ㅅ"}, {"ㅇ","ㅈ","ㅊ"}, {"d","dd"}, {"dssdg","sdfsd"}, {"ssssss","sssssssssss"};
리스트를 클릭했을 때 이동하고자 하는 Url을 children 배열에 넣어보세요. 예를 들면 이런식입니다.
children = new String[][]{ {"http://hashcode.co.kr","http://www.naver.com","http://www.daum.net","http://www.google.com"}, {"http://www.stackoveflow.com", "..."}, ... ...
그런 후 OnClickListener 내에서 groupPosition과 childPosition을 이용해 children 배열에서 Url을 가져오면 됩니다. 다음 코드를 이용해서 테스트 해보세요.
holder.text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(children[groupPosition][childPosition])); startActivity(intent); } });
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력