package im.actor.sdk.controllers.settings; import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import im.actor.sdk.ActorSDK; import im.actor.sdk.R; import im.actor.sdk.util.Screen; import im.actor.sdk.view.BackgroundPreviewView; public class WallpapersAdapter extends RecyclerView.Adapter<WallpapersAdapter.WallpaperHolder> { private int wallpaperSize = Screen.dp(85); private int padding; private ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(wallpaperSize, wallpaperSize); private int selected = 0; @Override public WallpaperHolder onCreateViewHolder(ViewGroup parent, int viewType) { BackgroundPreviewView itemView = new BackgroundPreviewView(parent.getContext()); itemView.init(wallpaperSize, wallpaperSize, Screen.dp(2)); itemView.setLayoutParams(params); padding = Screen.dp(8); ImageView selected = new ImageView(parent.getContext()); selected.setImageResource(R.drawable.ic_done_white_36dp); selected.setScaleType(ImageView.ScaleType.CENTER_INSIDE); int selectedPadding = Screen.dp(12); int selectedSize = Screen.dp(48); selected.setPadding(selectedPadding, selectedPadding, selectedPadding, selectedPadding); selected.setBackgroundResource(R.drawable.avatar_background); FrameLayout fl = new FrameLayout(parent.getContext()); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(wallpaperSize, wallpaperSize, Gravity.LEFT | Gravity.CENTER_VERTICAL); params.setMargins(0, 0, Screen.dp(8), 0); fl.addView(itemView, params); FrameLayout.LayoutParams params1 = new FrameLayout.LayoutParams(selectedSize, selectedSize, Gravity.LEFT | Gravity.CENTER_VERTICAL); params1.setMargins(Screen.dp(18.5f), 0, 0, 0); fl.addView(selected, params1); return new WallpaperHolder(fl, itemView, selected); } @Override public void onBindViewHolder(WallpaperHolder holder, int position) { holder.bind(position); } @Override public int getItemCount() { return ActorSDK.sharedActor().style.getDefaultBackgrouds().length; } public class WallpaperHolder extends RecyclerView.ViewHolder { private BackgroundPreviewView view; private int i; private View selectedView; public WallpaperHolder(FrameLayout container, BackgroundPreviewView itemView, ImageView selectedView) { super(container); view = itemView; this.selectedView = selectedView; itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(v.getContext(), PickWallpaperActivity.class); intent.putExtra("EXTRA_ID", i); v.getContext().startActivity(intent); } }); } public void bind(int i) { this.i = i; view.bind(i); if (selected == i) { selectedView.setVisibility(View.VISIBLE); } else { selectedView.setVisibility(View.INVISIBLE); } } } public void setSelected(int selected) { this.selected = selected; notifyDataSetChanged(); } }