package com.marshalchen.common.demoofui.snackbar;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import com.marshalchen.common.demoofui.R;
import com.nispok.snackbar.Snackbar;
import com.nispok.snackbar.SnackbarManager;
import java.util.ArrayList;
import java.util.List;
import static android.widget.AdapterView.OnItemClickListener;
public class SnackbarShowInDialogSampleActivity extends ActionBarActivity {
private static final String TAG = SnackbarShowInDialogSampleActivity.class.getSimpleName();
private static final String FRAGMENT_TAG_MY_DIALOG = "MyDialog";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.snack_bar_activity_show_in_dialog_sample);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
final Button button = (Button) findViewById(android.R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDialog();
}
});
}
private void openDialog() {
getSupportFragmentManager()
.beginTransaction()
.add(new MyDialogFragment(), FRAGMENT_TAG_MY_DIALOG)
.commit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public static class MyDialogFragment extends DialogFragment implements OnItemClickListener {
private ViewGroup mSnackbarContainer;
private ListView mListView;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Context context = getActivity();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
View view = LayoutInflater.from(context).inflate(R.layout.snack_bar_fragment_dialog_list, null, false);
mListView = (ListView) view.findViewById(android.R.id.list);
mSnackbarContainer = (ViewGroup) view.findViewById(R.id.snackbar_container);
List<String> data = new ArrayList<String>();
for (int i = 0; i < 25; i++) {
data.add(String.format("Item %d", (i + 1)));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
context, android.R.layout.simple_list_item_1, data);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(this);
builder.setView(view);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
return builder.create();
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
mListView.setOnItemClickListener(null);
mListView = null;
mSnackbarContainer = null;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
SnackbarManager.show(
Snackbar.with(getActivity())
.text(String.format("Item %d pressed", (position + 1)))
.actionLabel("Close")
.actionColor(Color.parseColor("#FF8A80"))
.duration(Snackbar.SnackbarDuration.LENGTH_LONG)
.attachToAbsListView(mListView),
mSnackbarContainer, true);
}
}
}