package com.betomaluje.android.miband.example.activities; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import com.betomaluje.android.miband.example.R; import com.betomaluje.android.miband.example.adapters.ApplicationsAdapter; import com.betomaluje.android.miband.example.models.App; import com.betomaluje.android.miband.example.sqlite.AppsSQLite; import java.util.ArrayList; import java.util.List; /** * Created by betomaluje on 7/6/15. */ public class AppsPreferencesActivity extends BaseActivity { private final String TAG = getClass().getSimpleName(); private final int APP_DETAIL_CODE = 5211; private RecyclerView recycler; private LinearLayoutManager lManager; private ArrayList<App> apps; private ApplicationsAdapter adapter; @Override protected int getLayoutResource() { return R.layout.activity_apps; } @Override protected void setActionBarIcon(int iconRes) { super.setActionBarIcon(iconRes); } @Override protected boolean getDisplayHomeAsUpEnabled() { return true; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!AppsSQLite.getInstance(AppsPreferencesActivity.this).doesTableExists()) { fillApps(); } apps = AppsSQLite.getInstance(AppsPreferencesActivity.this).getApps(); adapter = new ApplicationsAdapter(AppsPreferencesActivity.this, apps, itemClickListener); recycler = (RecyclerView) findViewById(R.id.recyclerView); recycler.setHasFixedSize(true); // Usar un administrador para LinearLayout lManager = new LinearLayoutManager(this); recycler.setLayoutManager(lManager); // Crear un nuevo adaptador recycler.setAdapter(adapter); } private View.OnClickListener itemClickListener = new View.OnClickListener() { @Override public void onClick(View v) { int position = recycler.getChildAdapterPosition(v); thumbNailScaleAnimation(v, apps.get(position), position); } }; private void fillApps() { final PackageManager pm = getPackageManager(); //get a list of installed apps. List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); AppsSQLite appsSQLite = AppsSQLite.getInstance(AppsPreferencesActivity.this); for (ApplicationInfo packageInfo : packages) { String name = pm.getApplicationLabel(packageInfo).toString(); appsSQLite.saveApp(name, packageInfo.packageName, -524538, false, 500); } } private void thumbNailScaleAnimation(View view, App app, int position) { ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( AppsPreferencesActivity.this, view, AppDetailActivity.extra); Intent intent = new Intent(AppsPreferencesActivity.this, AppDetailActivity.class); Bundle b = new Bundle(); b.putParcelable(AppDetailActivity.extra, app); b.putInt(AppDetailActivity.extra_position, position); intent.putExtras(b); ActivityCompat.startActivityForResult(AppsPreferencesActivity.this, intent, APP_DETAIL_CODE, options.toBundle()); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == APP_DETAIL_CODE && resultCode == RESULT_OK) { Bundle b = data.getExtras(); if (b != null) { App returned = b.getParcelable(AppDetailActivity.extra_returned); if (returned != null) { App previous = apps.get(b.getInt(AppDetailActivity.extra_position, 0)); previous.setNotify(returned.isNotify()); previous.setColor(returned.getColor()); previous.setStartTime(returned.getStartTime()); previous.setEndTime(returned.getEndTime()); adapter.notifyDataSetChanged(); } } Snackbar.make(findViewById(R.id.coordinator), "Changes saved!", Snackbar.LENGTH_LONG).show(); } } }