1

フラグメントで展開可能なリストビューを作成しましたが、正常に動作します。ただし、展開可能なリストビューの子アイテムがクリックされたときにアクティビティを開始したいと考えています。これに対する解決策を見つけようと何時間も探しましたが、見つかりませんでした。誰かがこの問題のコードを提供してください。

import android.R.color;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.TextView;
import android.widget.Toast;

        // This is a listfragment class
        public class Categories extends Fragment {

            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View v = inflater.inflate(R.layout.categories, null);
                ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.expandableListView1);
                elv.setAdapter(new SavedTabsListAdapter());
                return v;
            }

            public class SavedTabsListAdapter extends BaseExpandableListAdapter {

                private String[] groups = { "Men", "Women"};

                private String[][] children = {
                    { "Men's accessories", "Men's trousers"},
                    { "Dresses", "Women's trousers"}
                };

                @Override
                public int getGroupCount() {
                    return groups.length;
                }

                @Override
                public int getChildrenCount(int i) {
                    return children[i].length;
                }

                @Override
                public Object getGroup(int i) {
                    return groups[i];
                }

                @Override
                public Object getChild(int i, int i1) {
                    return children[i][i1];
                }

                @Override
                public long getGroupId(int i) {
                    return i;
                }

                @Override
                public long getChildId(int i, int i1) {
                    return i1;
                }

                @Override
                public boolean hasStableIds() {
                    return true;
                }

                @Override
                public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
                    TextView textView = new TextView(CategoriesFragment.this.getActivity());
                    textView.setText(getGroup(i).toString());
                    return textView;
                }

                @Override
                public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
                    TextView textView = new TextView(CategoriesFragment.this.getActivity());
                    textView.setText(getChild(i, i1).toString());
                    return textView;
                }

                @Override
                public boolean isChildSelectable(int i, int i1) {
                    return true;
                }

            }

        Intent k;

        @Override
        public boolean onChildClick(ExpandableListView parent, View v,
                int groupPosition, int childPosition, long id) {
            switch(childPosition){
            case 0:
                k = new Intent(getActivity().getApplicationContext(), Baby.class);
                break;
            case 1:
                k = new Intent(getActivity().getApplicationContext(), Baby1.class);
                break;
            }
            startActivity(k);
            return true;
        }

        }
4

1 に答える 1

1

子要素をクリックすると、関数で何childpositionが得られOnChildClickますか??

そして、どこに設定しましたChildClickListenerか?? 設定していない場合は、このコードの後にExpandableListView elv = (ExpandableListView) v.findViewById(R.id.expandableListView1); ​​この行を書きますelv.setOnChildClickListener("your_listener");

また、ベスト プラクティスとして、上記のリスナーと OnChildClick 関数を次のように記述できます。

最初に OnChildClick と OnChildClickListener (存在する場合) を削除してから、コードを上記の場所に配置しますelv.setOnChildClickListener("your_listener");

elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {     
                @Override
                public boolean onChildClick(ExpandableListView parent, View v,
                        int groupPosition, int childPosition, long id) {
                     switch(childPosition){
                        case 0:
                            k = new Intent(getActivity().getApplicationContext(), Baby.class);
                            break;
                        case 1:
                            k = new Intent(getActivity().getApplicationContext(), Baby1.class);
                            break;
                        }
                        startActivity(k);
                        return true;
                }           
});

問題が解決しない場合はお知らせください

于 2013-08-07T05:43:54.873 に答える