Error on showing Toast in ExpandableList child item click

时间:2015-05-08 09:56:10

标签: android listview android-fragments onclick expandablelistview

I'm using an ExpandableListView extending BaseExpandableListAdapter in a Fragment and I show it inside a ViewPager. I'm trying to show the Text of each TextView of the childs when I click it. I don't know why it shut down the app when I press a child item. Could someone help me? Thank you a lot!

Here is my Fragment and Adapter:

let placesData = UserDefaults.standard.object(forKey: "places") as? NSData

if let placesData = placesData {
    let placesArray = NSKeyedUnarchiver.unarchiveObject(with: placesData as Data) as? [Place]
    print(placesArray)
}

And here is my layout:

my %CONFIG = (
    'scriptURI' => "data.js",
    'imageFolder' => "images/",
    'outputFileName' => 'testImg.swf',
    'delay' => 3,                       # delay between images
    'fps'   => 10,
    'fadeFrame' => 10                   # 1 second fade in/out
);

sub addImgToMovie {
    my $img = shift;
    my $frameNo = shift;
    my $movie = shift;
    my $movieClip = $movie -> new_mc();
    my $jpeg = $movieClip -> new_jpeg($img);
    $jpeg -> place(Frame => 1);

    my $mc_i = $movieClip -> place(Frame => $frameNo);  

    my $onloadScript = sprintf("
        this._alpha = %d;
        this.apf = %f;
        this.frameIndex = %d;
        this.fadeOutFrameIndex = %d;
        ", 0, 100 / $CONFIG{'fadeFrame'}, 1, $CONFIG{'delay'} * $CONFIG{'fps'} - $CONFIG{'fadeFrame'});
    $mc_i -> onClipEvent('Load') -> compile($onloadScript);

    my $onEnterFrameScript = "
        this.frameIndex += 1;
        if ((this._alpha < 100) && (this.frameIndex < this.fadeOutFrameIndex)) {
            this._alpha += this.apf;
        } else if (this.frameIndex > this.fadeOutFrameIndex) {
            this._alpha -= this.apf;
        }
    ";
    $mc_i -> onClipEvent('EnterFrame') -> compile($onEnterFrameScript);
    return $movie;
}

my $movie = SWF::Builder -> new(
    FrameRate => $CONFIG{'fps'},
    FrameSize => [0, 0, 180, 163],
    BackgroundColor => 'ffffff'
);

my $img = $CONFIG{'imageFolder'} . "adimage1.jpg";
$movie = addImgToMovie($img, 1, $movie);
$movie -> save($CONFIG{'outputFileName'});

EDIT:

Here is the logcat message:

public class SavedTabsFragment extends Fragment {

    private ArrayList<String> parentItems = new ArrayList<>();
    private ArrayList<Object> childItems = new ArrayList<>();

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

        elv.setGroupIndicator(null);
        elv.setClickable(true);
        setGroupParents();
        setChildData();

        SavedTabsListAdapter adapter = new SavedTabsListAdapter(parentItems, childItems);
        adapter.setInflater((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE), this);
        elv.setAdapter(adapter);

//        elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
//            @Override
//            public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
//                Toast.makeText(getActivity()," holaaa",Toast.LENGTH_SHORT).show();
//
//                return false;
//            }
//        });

        return v;

    }

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        //TODO
    }

    public static SavedTabsFragment newInstance(){
        SavedTabsFragment savedTabsFragment = new SavedTabsFragment();
        Bundle args = new Bundle();
        //TODO info del bundle
        return savedTabsFragment;
    }

    public void setGroupParents() {
        parentItems.add("Androwwid");
        parentItems.add("Core Java");
        parentItems.add("Desktop Java");
        parentItems.add("Enterprise Java");
    }

    public void setChildData() {

        // Android
        ArrayList<String> child = new ArrayList<>();
        child.add("Core");
        child.add("Games");
        childItems.add(child);

        // Core Java
        child = new ArrayList<>();
        child.add("Apache");
        child.add("Applet");
        child.add("AspectJ");
        child.add("Beans");
        child.add("Crypto");
        childItems.add(child);

        // Desktop Java
        child = new ArrayList<>();
        child.add("Accessibility");
        child.add("AWT");
        child.add("ImageIO");
        child.add("Print");
        childItems.add(child);

        // Enterprise Java
        child = new ArrayList<>();
        child.add("EJB3");
        child.add("GWT");
        child.add("Hibernate");
        child.add("JSP");
        childItems.add(child);
    }

    public class SavedTabsListAdapter extends BaseExpandableListAdapter {

        private ArrayList<String> parentItems, child;
        private ArrayList<Object> childItems;
        private LayoutInflater inflater;
        private Activity activity;

        public SavedTabsListAdapter(ArrayList<String> parentItems, ArrayList<Object> childItems) {
            this.childItems = childItems;
            this.parentItems = parentItems;
        }

        public int getGroupCount() {
            return parentItems.size();
        }

          public int getChildrenCount(int i) {
               return ((ArrayList<String>) childItems.get(i)).size();
        }

        public Object getGroup(int i) {
            return parentItems.get(i);
        }

        public Object getChild(int i, int i1) {
            return null;
        }

        public long getGroupId(int i) {
            return 0;
        }

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

        public boolean hasStableIds() {
            return false;
        }

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
               if (convertView == null) {
                convertView = inflater.inflate(R.layout.row, null);
            }

            ((CheckedTextView) convertView).setText(parentItems.get(groupPosition));
            ((CheckedTextView) convertView).setChecked(isExpanded);


            return convertView;
        }
                          @Override
        public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
            child = (ArrayList<String>) childItems.get(groupPosition);

            TextView textView = null;

            if (convertView == null) {
                convertView = inflater.inflate(R.layout.group, null);
            }
            textView = new TextView(SavedTabsFragment.this.getActivity());
            textView = (TextView) convertView.findViewById(R.id.textView1);
            textView.setText(child.get(childPosition));

            textView.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    Toast.makeText(activity, child.get(childPosition)+" holaaa",
                            Toast.LENGTH_SHORT).show();
                }
            });




            return convertView;
        }


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

        @Override
        public void onGroupCollapsed(int groupPosition) {
            super.onGroupCollapsed(groupPosition);
        }

        @Override
        public void onGroupExpanded(int groupPosition) {
            super.onGroupExpanded(groupPosition);
        }

        public void setInflater(LayoutInflater inflater, SavedTabsFragment savedTabsFragment) {
            this.inflater = inflater;
//            this = savedTabsFragment;
        }
            }
}

1 个答案:

答案 0 :(得分:0)

use OnItemClickListener, not CREATE OR REPLACE FUNCTION accdisvalues(thisdate date) RETURNS void AS $BODY$ Update my_table Set mycolumn = true where mydatecol = thisdate; $BODY$ LANGUAGE sql VOLATILE SECURITY DEFINER COST 100; ALTER FUNCTION accdisvalues(date) OWNER TO myconnect;