com.cnm.cnmrc.fragment.search.SearchVodSemi.java Source code

Java tutorial

Introduction

Here is the source code for com.cnm.cnmrc.fragment.search.SearchVodSemi.java

Source

/*
 * Copyright (C) 2011 Chris Gao <chris@exina.net>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.cnm.cnmrc.fragment.search;

import java.util.ArrayList;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.Toast;

import com.cnm.cnmrc.MainActivity;
import com.cnm.cnmrc.R;
import com.cnm.cnmrc.adapter.VodSemiAdapter;
import com.cnm.cnmrc.item.ItemVodSemi;
import com.cnm.cnmrc.item.ItemVodSemiList;
import com.cnm.cnmrc.parser.VodSemiParser;
import com.cnm.cnmrc.util.UiUtil;
import com.cnm.cnmrc.util.UrlAddress;
import com.cnm.cnmrc.util.Util;

public class SearchVodSemi extends Fragment implements View.OnClickListener {

    public static SearchVodSemi newInstance(String search) {
        SearchVodSemi f = new SearchVodSemi();
        Bundle args = new Bundle();
        args.putString("search", search); // vod or tvch
        f.setArguments(args);
        return f;
    }

    FrameLayout preventClickDispatching; //  ?  ?? ?? .

    ListView listView;
    VodSemiAdapter adapter;
    ArrayList<ItemVodSemi> mResult = null;

    String search;

    /**
     *  ?  
     * 1)  ? ?? ? Api??  .
     * 2) ?  Activity Fragment? ??? ?  ? ? ?? . ( ?? ?  ?...)
     * 3)  ??  ? ? elements ??  .   ?  ?. (, VOD_ID --> ID)
     *    : ?? ? ?  ?   ? ? . "_"?  . (, areaCode)
     *    : element? ? string ? ? ?   ? "_"? . (, AREA_CODE)
     * 4)  url?  ??    ? ?.
     */

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View layout = inflater.inflate(R.layout.vod_semi, container, false);

        preventClickDispatching = (FrameLayout) layout.findViewById(R.id.prevent_click_dispatching);
        preventClickDispatching.setOnClickListener(this);

        // listview
        listView = (ListView) layout.findViewById(R.id.vod_semi_listview);
        listView.setDivider(null);
        listView.setDividerHeight(0);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Fragment f = getActivity().getSupportFragmentManager()
                        .findFragmentByTag(((MainActivity) getActivity()).TAG_FRAGMENT_SEARCH);
                if (f != null) {
                    Bundle bundle = UiUtil.makeVodDetailBundle(getActivity(), adapter, view, position);
                    ((SearchMain) f).showSearchVodDetail(bundle);
                }
            }

        });

        return layout;
    }

    @Override
    public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
        Animation anim;

        if (enter)
            anim = AnimationUtils.loadAnimation(getActivity(), R.anim.fragment_entering);
        else
            anim = AnimationUtils.loadAnimation(getActivity(), R.anim.fragment_exit);

        anim.setAnimationListener(new AnimationListener() {
            public void onAnimationStart(Animation animation) {
            }

            public void onAnimationEnd(Animation animation) {
                ((MainActivity) getActivity()).getMyProgressBar().show();
                showSearchVodSemi();
            }

            public void onAnimationRepeat(Animation animation) {
            }
        });

        return anim;
    }

    private void showSearchVodSemi() {
        // check network and data loading
        if (Util.GetNetworkInfo(getActivity()) == 99) {
            Util.AlertShow(getActivity());
        } else {
            search = getArguments().getString("search");
            new SearchVodSemiAsyncTask().execute(search);
        }
    }

    long elapsedTime;
    ItemVodSemiList list;

    private class SearchVodSemiAsyncTask extends AsyncTask<String, Void, ArrayList<ItemVodSemi>> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        protected ArrayList<ItemVodSemi> doInBackground(String... params) {
            String requestURL = UrlAddress.Search.getSearchVod(params[0], "0", "0", "TitleAsc");
            VodSemiParser parser = new VodSemiParser(requestURL);

            elapsedTime = System.currentTimeMillis();
            parser.start();
            Log.i("hwang", "elapsedTime of search vod : " + (System.currentTimeMillis() - elapsedTime));

            list = parser.getList();
            return parser.getList().getList();
        }

        // onPostExecute displays the results of the AsyncTask.
        @Override
        protected void onPostExecute(ArrayList<ItemVodSemi> result) {
            mResult = result;

            if (mResult.size() == 0) {
                Toast.makeText(getActivity(), "?? !", Toast.LENGTH_LONG).show();
                ((MainActivity) getActivity()).getMyProgressBar().dismiss();
                return;
            }

            if (mResult == null)
                onCancelled();
            else {
                Log.i("hwang", "search vod result count : " + list.getTotalCount());

                if (!list.getResultCode().equals("100")) {
                    String desc = Util.getErrorCodeDesc(list.getResultCode());
                    Toast.makeText(getActivity(), desc, Toast.LENGTH_LONG).show();
                } else {
                    adapter = new VodSemiAdapter(getActivity(), R.layout.list_item_vod_semi, mResult);
                    listView.setAdapter(adapter);
                }

                ((MainActivity) getActivity()).getMyProgressBar().dismiss();
            }
        }

        @Override
        protected void onCancelled() {
            Util.onCancelled(getActivity());

            super.onCancelled();
        }
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();

        // ----------------------------------------------------------------------------------------------
        // vod? ?? vodtopmenu fragment vod destory?  ??? vodtopmenu? ? destory .
        // ?  ???? ? fragment ? vod? ?  ? ? Activity?   .
        // ----------------------------------------------------------------------------------------------
        //        {
        //           Fragment f = getActivity().getSupportFragmentManager().findFragmentByTag("search_vod_detail");
        //           if (f != null) {
        //              getActivity().getSupportFragmentManager().beginTransaction().remove(f).commit();
        //           }
        //        }
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

    }

    @Override
    public void onDetach() {
        super.onDetach();

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

}