blob: 716f11a5587c0929563522fb73591703445ca966 [file] [log] [blame]
package org.skia.androidkitdemo1;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import java.util.ArrayList;
public class NavigationSpinner extends Spinner {
private final String TAG = "ANDROIDKIT DEMO SPINNER";
public NavigationSpinner(Context context) {
super(context);
init(context);
}
public NavigationSpinner(Context context, AttributeSet attr) {
super(context, attr);
init(context);
}
private void init(Context context) {
ArrayAdapter<String> adapter;
// populate Spinner
ArrayList<String> navigationOptions;
try {
navigationOptions = getActivityList(context);
} catch (Exception e) {
return;
}
adapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, navigationOptions);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.setAdapter(adapter);
// set Spinner logic
this.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (!parent.getItemAtPosition(position).equals("Select Activity")) {
String activityName = parent.getItemAtPosition(position).toString();
Log.d(TAG, "Navigating to " + activityName);
try {
Intent myIntent = new Intent(context, Class.forName(activityName));
context.startActivity(myIntent);
} catch (Exception e) {
Log.d(TAG, "Couldn't find selected activity.");
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
private ArrayList<String> getActivityList(Context c) throws PackageManager.NameNotFoundException {
PackageManager pm = c.getPackageManager();
PackageInfo info = pm.getPackageInfo(c.getPackageName(), PackageManager.GET_ACTIVITIES);
ActivityInfo[] list = info.activities;
ArrayList<String> activityNames = new ArrayList<>();
for (ActivityInfo activity : list) {
activityNames.add(activity.name);
}
activityNames.add(0, "Select Demo");
return activityNames;
}
}