Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.69 KB | None | 0 0
  1. package com.imakeservice.ui;
  2.  
  3. /**
  4. * Created by dml on 1/25/2016 AD.
  5. */
  6.  
  7. import android.app.AlertDialog;
  8. import android.content.BroadcastReceiver;
  9. import android.content.Context;
  10. import android.content.Intent;
  11. import android.graphics.Bitmap;
  12. import android.net.Uri;
  13. import android.os.AsyncTask;
  14. import android.os.Bundle;
  15. import android.support.v4.app.Fragment;
  16. import android.support.v4.widget.SwipeRefreshLayout;
  17. import android.support.v7.widget.DefaultItemAnimator;
  18. import android.support.v7.widget.RecyclerView;
  19. import android.support.v7.widget.StaggeredGridLayoutManager;
  20. import android.text.Html;
  21. import android.util.Log;
  22. import android.view.LayoutInflater;
  23. import android.view.View;
  24. import android.view.ViewGroup;
  25. import android.widget.ImageButton;
  26. import android.widget.ImageView;
  27. import android.widget.TextView;
  28. import android.widget.VideoView;
  29.  
  30. import com.imakeservice.api.CacheService;
  31. import com.imakeservice.api.Logger;
  32. import com.imakeservice.api.WebService;
  33. import com.imakeservice.puza.R;
  34.  
  35. import java.text.SimpleDateFormat;
  36. import java.util.ArrayList;
  37. import java.util.Date;
  38.  
  39. /**
  40. * A placeholder fragment containing a simple view.
  41. */
  42. public class FragmentNewsFeed extends Fragment implements WebService.Receiver {
  43.  
  44. private BroadcastReceiver receiver;
  45.  
  46. public FragmentNewsFeed() {
  47. }
  48.  
  49. /**
  50. * Returns a new instance of this fragment for the given section
  51. * number.
  52. */
  53. public static FragmentNewsFeed newInstance(Bundle args) {
  54. FragmentNewsFeed fragment = new FragmentNewsFeed( );
  55. fragment.setArguments( args );
  56. return fragment;
  57. }
  58.  
  59. @Override
  60. public void onPause() {
  61. super.onPause( );
  62. if (receiver != null)
  63. WebService.UnregisterReceiver( getContext( ), receiver );
  64. }
  65.  
  66. @Override
  67. public void onResume() {
  68. super.onResume( );
  69.  
  70. receiver = WebService.RegisterReceiver( getContext(), this);
  71.  
  72. //reload( );
  73. }
  74.  
  75. public void reload() {
  76. Bundle args = getArguments();
  77. args.putInt( "_ID", hashCode( ) );
  78.  
  79. Context context = getActivity().getApplicationContext( );
  80.  
  81. ;
  82. WebService.Get(context, args.getString( "url" ), args );
  83. Log.i( "reload", "WebService.Get" );
  84. }
  85.  
  86. @Override
  87. public void setUserVisibleHint(boolean isVisibleToUser) {
  88. super.setUserVisibleHint( isVisibleToUser );
  89.  
  90. if (isVisibleToUser){
  91. reload();
  92. } else {
  93.  
  94. }
  95. }
  96.  
  97. @Override
  98. public void onDataBundleReceived(Context context, String method, String in_url, Bundle args, Bundle data) {
  99. Logger.i( "onDataBundleReceived", data );
  100.  
  101. if ( data == null )
  102. return;
  103.  
  104. if ( data.getInt( "_ID" ) != hashCode())
  105. return;
  106.  
  107. //Log.i( "onDataReceived", getArguments().getString( "title" ) + " " + data.getString( "_URL" ) );
  108.  
  109. ArrayList<Bundle> entries = new ArrayList<>( );
  110.  
  111. String type = data.getString( "type", "feed" );
  112.  
  113. if ( type != null ) switch ( type ) {
  114. case "feed": {
  115. Bundle responseData = data.getBundle( "responseData" );
  116.  
  117. if ( responseData != null ) {
  118. Bundle feed = responseData.getBundle( "feed" );
  119.  
  120. if ( feed != null ) {
  121. entries = (ArrayList<Bundle>) feed.get( "entries" );
  122.  
  123. for ( int i = 0; i < entries.size( ); i++ ) {
  124. Bundle entry = entries.get( i );
  125.  
  126. ArrayList<Bundle> mediaGroups = (ArrayList<Bundle>) entry.get( "mediaGroups" );
  127. if ( mediaGroups != null && mediaGroups.size( ) > 0 ) {
  128. Bundle mediaGroup = mediaGroups.get( 0 );
  129. if ( mediaGroup != null ) {
  130. ArrayList<Bundle> contents = (ArrayList<Bundle>) mediaGroup.get( "contents" );
  131. if ( contents != null && contents.size( ) > 0 ) {
  132. Bundle content = contents.get( 0 );
  133.  
  134. entry.putString( "media_type", content.getString( "type" ) );
  135. entry.putInt( "media_width", content.getInt( "width" ) );
  136. entry.putInt( "media_height", content.getInt( "height" ) );
  137. entry.putString( "media_url", content.getString( "url" ) );
  138.  
  139. ArrayList<Bundle> thumbnails = (ArrayList<Bundle>) content.get( "thumbnails" );
  140. if ( thumbnails != null ) {
  141. String url = thumbnails.get( 0 ).getString( "url" );
  142. entry.putString( "thumbnail", url );
  143. Log.i( "image", url );
  144.  
  145. }
  146. }
  147. }
  148. }
  149.  
  150. entry.putString( "created_date", "-" );
  151.  
  152. try {
  153. SimpleDateFormat fmt = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss zzz" );
  154. Date d = fmt.parse( entry.getString( "publishedDate" ) );
  155. fmt = new SimpleDateFormat( "dd/MM/yyyy" );
  156. entry.putString( "created_date", fmt.format( d ) );
  157. } catch (Exception ex) {
  158. Log.e( "SimpleDateFormat", "", ex );
  159. }
  160.  
  161. //entries.set( i, entry );
  162. }
  163.  
  164. }
  165.  
  166.  
  167.  
  168. }
  169. }
  170. break;
  171.  
  172. case "image": {
  173. }
  174. break;
  175. }
  176.  
  177.  
  178. View rootView = getView( );
  179. RecyclerView recycler = (RecyclerView) rootView.findViewById( R.id.ls_recycler );
  180. RecyclerListAdapter adapter = new RecyclerListAdapter( entries );
  181.  
  182. StaggeredGridLayoutManager layout = new StaggeredGridLayoutManager( 2, StaggeredGridLayoutManager.VERTICAL );
  183. //LinearLayoutManager layout = new LinearLayoutManager( container.getContext() );
  184. //layout.setOrientation( LinearLayoutManager.VERTICAL );
  185. recycler.setAdapter( adapter );
  186. recycler.setLayoutManager( layout );
  187. recycler.setItemAnimator( new DefaultItemAnimator( ) );
  188.  
  189. final SwipeRefreshLayout swipe_refresher = (SwipeRefreshLayout) rootView.findViewById( R.id.ls_recycler_swiperefresh );
  190. swipe_refresher.setEnabled( false );
  191. swipe_refresher.setOnRefreshListener( new SwipeRefreshLayout.OnRefreshListener( ) {
  192. @Override
  193. public void onRefresh() {
  194. reload();
  195.  
  196. swipe_refresher.setRefreshing( false );
  197. }
  198. } );
  199.  
  200.  
  201.  
  202. }
  203.  
  204.  
  205.  
  206. // create layout expand and set holder to render
  207. @Override
  208. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  209.  
  210. View rootView = inflater.inflate( R.layout.fragment_newsfeed, container, false );
  211. return rootView;
  212. }
  213.  
  214.  
  215.  
  216. /**
  217. * ListAdapter class manager for The RecyclerList items
  218. */
  219. public class RecyclerListAdapter extends
  220. RecyclerView.Adapter<RecyclerListAdapter.RecyclerListViewHolder> {
  221.  
  222. public ArrayList<Bundle> items;
  223.  
  224. public RecyclerListAdapter(ArrayList<Bundle> in_items) {
  225. items = in_items;
  226. }
  227.  
  228. @Override
  229. public RecyclerListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  230. View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_newsfeed_listitem, null);
  231. RecyclerListViewHolder holder = new RecyclerListViewHolder( view );
  232. return holder;
  233. }
  234.  
  235. @Override
  236. public void onBindViewHolder(RecyclerListViewHolder holder, int position) {
  237. holder.setData( items.get( position ) );
  238. }
  239.  
  240. @Override
  241. public int getItemCount() {
  242. return (items != null) ? items.size() : 0;
  243. }
  244.  
  245.  
  246. /**
  247. * ViewHolder for each item in the ListView which save View Reference for binding data later
  248. */
  249. class RecyclerListViewHolder extends RecyclerView.ViewHolder {
  250. public Bundle item;
  251. private View container;
  252.  
  253. public RecyclerListViewHolder(View v) {
  254. super( v );
  255. container = v;
  256. }
  257.  
  258. public void setData(final Bundle args) {
  259. item = args;
  260.  
  261. for(String key : args.keySet()) {
  262. final View v = container.findViewWithTag(key );
  263. if (v instanceof TextView ) {
  264. ((TextView) v).setText( args.getString( key ) );
  265.  
  266. } else if (v instanceof ImageView ) {
  267.  
  268. final ImageView img = (ImageView) v;
  269. final String url = args.getString( key );
  270. //WebService.GetContent( args.getString( key ) );
  271. final Bundle info = new Bundle();
  272. info.putInt( "width", 32 );
  273. info.putInt( "height", 16 );
  274.  
  275. img.setImageDrawable( null );
  276.  
  277. //WebService.GetBitmap( v.getContext(), args.getString( key ), info );
  278. //(ImageView) v ).setImageBitmap( WebService.RequestDataBitmap( "GET", args.getString( key ), new Bundle( ) ) );
  279.  
  280. AsyncTask<Void, Void, Void> loader = new AsyncTask<Void, Void, Void>( ) {
  281.  
  282. public Bitmap bmp = null;
  283.  
  284. @Override
  285. protected void onPreExecute() {
  286. super.onPreExecute( );
  287. img.setScaleType( ImageView.ScaleType.CENTER_INSIDE );
  288. img.setImageAlpha( 72 );
  289. }
  290.  
  291. @Override
  292. protected Void doInBackground(Void... voids) {
  293. bmp = CacheService.GetBitmap( getContext( ), url, info );
  294. return null;
  295. }
  296.  
  297. @Override
  298. protected void onPostExecute(Void aVoid) {
  299. super.onPostExecute( aVoid );
  300.  
  301. img.setImageBitmap( bmp );
  302. img.setScaleType( ImageView.ScaleType.FIT_XY );
  303. img.setImageAlpha( 255 );
  304. }
  305. };
  306.  
  307. loader.execute( );
  308. }
  309. }
  310.  
  311. ImageButton bt;
  312. bt = (ImageButton) container.findViewById( R.id.lsitem_bt_share );
  313. if (bt != null) {
  314. bt.setOnClickListener( new View.OnClickListener( ) {
  315. @Override
  316. public void onClick(View view) {
  317. Intent i = new Intent(Intent.ACTION_SEND);
  318. i.setType("text/plain");
  319. i.putExtra( Intent.EXTRA_SUBJECT, args.getString( "title" ) );
  320. i.putExtra(Intent.EXTRA_TEXT, args.getString( "link" ));
  321. startActivity( Intent.createChooser( i, "Share to ..." ) );
  322.  
  323. }
  324. } );
  325.  
  326. bt = (ImageButton) container.findViewById( R.id.lsitem_bt_open );
  327. if (bt != null) {
  328. bt.setOnClickListener( new View.OnClickListener( ) {
  329. @Override
  330. public void onClick(View view) {
  331.  
  332. Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse( args.getString( "link" ) ));
  333. startActivity(i);
  334. }
  335. });
  336. }
  337.  
  338. container.setOnClickListener( new View.OnClickListener( ) {
  339. @Override
  340. public void onClick(View view) {
  341.  
  342. AlertDialog.Builder dlg = new AlertDialog.Builder( getContext( ) );
  343.  
  344. if (item.getString( "media_type", "" ).equalsIgnoreCase( "video/mp4") ) {
  345. VideoView video = new VideoView( getContext() );
  346. //MediaController controller = new MediaController( getContext() );
  347. video.setLayoutParams( new ViewGroup.LayoutParams( 320, 320 ) );
  348. video.setVideoURI( Uri.parse( item.getString( "media_url" ) ) );
  349. //video.setMediaController( controller );
  350. dlg.setView( video );
  351. video.start( );
  352. } else {
  353.  
  354. dlg.setTitle( item.getString( "title" ) );
  355. dlg.setMessage( Html.fromHtml( item.getString( "content" ) ));
  356. }
  357.  
  358. /*
  359. dlg.setPositiveButton( "OK", new DialogInterface.OnClickListener( ) {
  360. @Override
  361. public void onClick(DialogInterface dialogInterface, int i) {
  362. dialogInterface.dismiss( );
  363.  
  364. }
  365. } ); */
  366. dlg.show( );
  367.  
  368.  
  369. }
  370. } );
  371.  
  372. }
  373. }
  374. }
  375. }
  376.  
  377.  
  378.  
  379.  
  380. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement