차일드 expandable리스트뷰 각각이 클릭이 되게 하고 싶습니다.(Inside fragment)


우선 권태환님 도움으로(감사드립니다..꾸벅) 클릭이벤트를 적용시키긴했으나 아직 각각 다르게 클릭이 가능하게는 못하겠어서 질문 재차 올립니다 ㅠㅠ


   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 아이템 부분에 같은 토스트가 출력이 되는 상태입니다. 도움부탁드립니당 ㅠㅠ!

  • 2016년 05월 20일에 작성됨

조회수 165


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);
    }
});

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

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