package com.marshalchen.common.demoofui.snackbar; import com.marshalchen.common.demoofui.R; import com.nispok.snackbar.Snackbar; import com.nispok.snackbar.SnackbarManager; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class SnackbarRecyclerViewSampleActivity extends ActionBarActivity { private static final String TAG = SnackbarRecyclerViewSampleActivity.class.getSimpleName(); private RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.snack_bar_activity_recyclerview_sample); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mRecyclerView = (RecyclerView) findViewById(android.R.id.list); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); List<String> data = new ArrayList<String>(); for(int i = 0; i < 25; i++) { data.add(String.format("Item %d", (i + 1))); } SimpleDataAdapter adapter = new SimpleDataAdapter(android.R.layout.simple_list_item_1, data, this); mRecyclerView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.snack_bar_recyclerview_sample, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.action_add_snackbar: SnackbarManager.show( Snackbar.with(SnackbarRecyclerViewSampleActivity.this) .text("Woo, snackbar!") .actionLabel("Close") .actionColor(Color.parseColor("#FF8A80")) .duration(Snackbar.SnackbarDuration.LENGTH_LONG) .attachToRecyclerView(mRecyclerView)); return true; default: return super.onOptionsItemSelected(item); } } private static class SimpleDataAdapter extends RecyclerView.Adapter<SimpleViewHolder> { private final int mLayoutId; private List<String> mData; private Context mContext; private SimpleDataAdapter(int layoutId, List<String> data, Context context) { mLayoutId = layoutId; mContext = context; mData = data; } @Override public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int itemType) { final View rowView = LayoutInflater.from(mContext).inflate(mLayoutId, parent, false); return new SimpleViewHolder(rowView); } @Override public void onBindViewHolder(SimpleViewHolder viewHolder, int position) { String data = mData.get(position); viewHolder.getText1().setText(data); } @Override public int getItemCount() { return mData.size(); } } private static class SimpleViewHolder extends RecyclerView.ViewHolder { private final TextView text1; public SimpleViewHolder(View itemView) { super(itemView); this.text1 = (TextView) itemView.findViewById(android.R.id.text1); } public TextView getText1() { return text1; } } }