Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.imakeservice.ui;
- /**
- * Created by dml on 1/25/2016 AD.
- */
- import android.app.AlertDialog;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.widget.SwipeRefreshLayout;
- import android.support.v7.widget.DefaultItemAnimator;
- import android.support.v7.widget.RecyclerView;
- import android.support.v7.widget.StaggeredGridLayoutManager;
- import android.text.Html;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ImageButton;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.VideoView;
- import com.imakeservice.api.CacheService;
- import com.imakeservice.api.Logger;
- import com.imakeservice.api.WebService;
- import com.imakeservice.puza.R;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- /**
- * A placeholder fragment containing a simple view.
- */
- public class FragmentNewsFeed extends Fragment implements WebService.Receiver {
- private BroadcastReceiver receiver;
- public FragmentNewsFeed() {
- }
- /**
- * Returns a new instance of this fragment for the given section
- * number.
- */
- public static FragmentNewsFeed newInstance(Bundle args) {
- FragmentNewsFeed fragment = new FragmentNewsFeed( );
- fragment.setArguments( args );
- return fragment;
- }
- @Override
- public void onPause() {
- super.onPause( );
- if (receiver != null)
- WebService.UnregisterReceiver( getContext( ), receiver );
- }
- @Override
- public void onResume() {
- super.onResume( );
- receiver = WebService.RegisterReceiver( getContext(), this);
- //reload( );
- }
- public void reload() {
- Bundle args = getArguments();
- args.putInt( "_ID", hashCode( ) );
- Context context = getActivity().getApplicationContext( );
- ;
- WebService.Get(context, args.getString( "url" ), args );
- Log.i( "reload", "WebService.Get" );
- }
- @Override
- public void setUserVisibleHint(boolean isVisibleToUser) {
- super.setUserVisibleHint( isVisibleToUser );
- if (isVisibleToUser){
- reload();
- } else {
- }
- }
- @Override
- public void onDataBundleReceived(Context context, String method, String in_url, Bundle args, Bundle data) {
- Logger.i( "onDataBundleReceived", data );
- if ( data == null )
- return;
- if ( data.getInt( "_ID" ) != hashCode())
- return;
- //Log.i( "onDataReceived", getArguments().getString( "title" ) + " " + data.getString( "_URL" ) );
- ArrayList<Bundle> entries = new ArrayList<>( );
- String type = data.getString( "type", "feed" );
- if ( type != null ) switch ( type ) {
- case "feed": {
- Bundle responseData = data.getBundle( "responseData" );
- if ( responseData != null ) {
- Bundle feed = responseData.getBundle( "feed" );
- if ( feed != null ) {
- entries = (ArrayList<Bundle>) feed.get( "entries" );
- for ( int i = 0; i < entries.size( ); i++ ) {
- Bundle entry = entries.get( i );
- ArrayList<Bundle> mediaGroups = (ArrayList<Bundle>) entry.get( "mediaGroups" );
- if ( mediaGroups != null && mediaGroups.size( ) > 0 ) {
- Bundle mediaGroup = mediaGroups.get( 0 );
- if ( mediaGroup != null ) {
- ArrayList<Bundle> contents = (ArrayList<Bundle>) mediaGroup.get( "contents" );
- if ( contents != null && contents.size( ) > 0 ) {
- Bundle content = contents.get( 0 );
- entry.putString( "media_type", content.getString( "type" ) );
- entry.putInt( "media_width", content.getInt( "width" ) );
- entry.putInt( "media_height", content.getInt( "height" ) );
- entry.putString( "media_url", content.getString( "url" ) );
- ArrayList<Bundle> thumbnails = (ArrayList<Bundle>) content.get( "thumbnails" );
- if ( thumbnails != null ) {
- String url = thumbnails.get( 0 ).getString( "url" );
- entry.putString( "thumbnail", url );
- Log.i( "image", url );
- }
- }
- }
- }
- entry.putString( "created_date", "-" );
- try {
- SimpleDateFormat fmt = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss zzz" );
- Date d = fmt.parse( entry.getString( "publishedDate" ) );
- fmt = new SimpleDateFormat( "dd/MM/yyyy" );
- entry.putString( "created_date", fmt.format( d ) );
- } catch (Exception ex) {
- Log.e( "SimpleDateFormat", "", ex );
- }
- //entries.set( i, entry );
- }
- }
- }
- }
- break;
- case "image": {
- }
- break;
- }
- View rootView = getView( );
- RecyclerView recycler = (RecyclerView) rootView.findViewById( R.id.ls_recycler );
- RecyclerListAdapter adapter = new RecyclerListAdapter( entries );
- StaggeredGridLayoutManager layout = new StaggeredGridLayoutManager( 2, StaggeredGridLayoutManager.VERTICAL );
- //LinearLayoutManager layout = new LinearLayoutManager( container.getContext() );
- //layout.setOrientation( LinearLayoutManager.VERTICAL );
- recycler.setAdapter( adapter );
- recycler.setLayoutManager( layout );
- recycler.setItemAnimator( new DefaultItemAnimator( ) );
- final SwipeRefreshLayout swipe_refresher = (SwipeRefreshLayout) rootView.findViewById( R.id.ls_recycler_swiperefresh );
- swipe_refresher.setEnabled( false );
- swipe_refresher.setOnRefreshListener( new SwipeRefreshLayout.OnRefreshListener( ) {
- @Override
- public void onRefresh() {
- reload();
- swipe_refresher.setRefreshing( false );
- }
- } );
- }
- // create layout expand and set holder to render
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View rootView = inflater.inflate( R.layout.fragment_newsfeed, container, false );
- return rootView;
- }
- /**
- * ListAdapter class manager for The RecyclerList items
- */
- public class RecyclerListAdapter extends
- RecyclerView.Adapter<RecyclerListAdapter.RecyclerListViewHolder> {
- public ArrayList<Bundle> items;
- public RecyclerListAdapter(ArrayList<Bundle> in_items) {
- items = in_items;
- }
- @Override
- public RecyclerListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_newsfeed_listitem, null);
- RecyclerListViewHolder holder = new RecyclerListViewHolder( view );
- return holder;
- }
- @Override
- public void onBindViewHolder(RecyclerListViewHolder holder, int position) {
- holder.setData( items.get( position ) );
- }
- @Override
- public int getItemCount() {
- return (items != null) ? items.size() : 0;
- }
- /**
- * ViewHolder for each item in the ListView which save View Reference for binding data later
- */
- class RecyclerListViewHolder extends RecyclerView.ViewHolder {
- public Bundle item;
- private View container;
- public RecyclerListViewHolder(View v) {
- super( v );
- container = v;
- }
- public void setData(final Bundle args) {
- item = args;
- for(String key : args.keySet()) {
- final View v = container.findViewWithTag(key );
- if (v instanceof TextView ) {
- ((TextView) v).setText( args.getString( key ) );
- } else if (v instanceof ImageView ) {
- final ImageView img = (ImageView) v;
- final String url = args.getString( key );
- //WebService.GetContent( args.getString( key ) );
- final Bundle info = new Bundle();
- info.putInt( "width", 32 );
- info.putInt( "height", 16 );
- img.setImageDrawable( null );
- //WebService.GetBitmap( v.getContext(), args.getString( key ), info );
- //(ImageView) v ).setImageBitmap( WebService.RequestDataBitmap( "GET", args.getString( key ), new Bundle( ) ) );
- AsyncTask<Void, Void, Void> loader = new AsyncTask<Void, Void, Void>( ) {
- public Bitmap bmp = null;
- @Override
- protected void onPreExecute() {
- super.onPreExecute( );
- img.setScaleType( ImageView.ScaleType.CENTER_INSIDE );
- img.setImageAlpha( 72 );
- }
- @Override
- protected Void doInBackground(Void... voids) {
- bmp = CacheService.GetBitmap( getContext( ), url, info );
- return null;
- }
- @Override
- protected void onPostExecute(Void aVoid) {
- super.onPostExecute( aVoid );
- img.setImageBitmap( bmp );
- img.setScaleType( ImageView.ScaleType.FIT_XY );
- img.setImageAlpha( 255 );
- }
- };
- loader.execute( );
- }
- }
- ImageButton bt;
- bt = (ImageButton) container.findViewById( R.id.lsitem_bt_share );
- if (bt != null) {
- bt.setOnClickListener( new View.OnClickListener( ) {
- @Override
- public void onClick(View view) {
- Intent i = new Intent(Intent.ACTION_SEND);
- i.setType("text/plain");
- i.putExtra( Intent.EXTRA_SUBJECT, args.getString( "title" ) );
- i.putExtra(Intent.EXTRA_TEXT, args.getString( "link" ));
- startActivity( Intent.createChooser( i, "Share to ..." ) );
- }
- } );
- bt = (ImageButton) container.findViewById( R.id.lsitem_bt_open );
- if (bt != null) {
- bt.setOnClickListener( new View.OnClickListener( ) {
- @Override
- public void onClick(View view) {
- Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse( args.getString( "link" ) ));
- startActivity(i);
- }
- });
- }
- container.setOnClickListener( new View.OnClickListener( ) {
- @Override
- public void onClick(View view) {
- AlertDialog.Builder dlg = new AlertDialog.Builder( getContext( ) );
- if (item.getString( "media_type", "" ).equalsIgnoreCase( "video/mp4") ) {
- VideoView video = new VideoView( getContext() );
- //MediaController controller = new MediaController( getContext() );
- video.setLayoutParams( new ViewGroup.LayoutParams( 320, 320 ) );
- video.setVideoURI( Uri.parse( item.getString( "media_url" ) ) );
- //video.setMediaController( controller );
- dlg.setView( video );
- video.start( );
- } else {
- dlg.setTitle( item.getString( "title" ) );
- dlg.setMessage( Html.fromHtml( item.getString( "content" ) ));
- }
- /*
- dlg.setPositiveButton( "OK", new DialogInterface.OnClickListener( ) {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- dialogInterface.dismiss( );
- }
- } ); */
- dlg.show( );
- }
- } );
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement