Getting text from spinner - android

placeSpinner.getSelectedItem().toString();
so I'm using this coding lines to get the text from my spinner and pass it on to another java file. But the application keeps giving me a force close whenever I do this.
How can I resolve this error?
Thank you so much.

I hope it will helpful to you.
Try this Code...
Here i store the index and value of selected spinner into SharedPreferences
private SharedPreferences prefs;
private String prefName = "spinn";
final List<String> list=new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
list.add("Item 4");
list.add("Item 5");
final Spinner sp1= (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adp1=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,list);
adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp1.setAdapter(adp1);
sp1.setOnItemSelectedListener(new OnItemSelectedListener()
{
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long id) {
// TODO Auto-generated method stub
int pos1=position;
String str1=sp1.getSelectedItem().toString();
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//---save the values in the EditText view to preferences---
editor.putInt("index", pos1);
editor.putString("value", str1);
//---saves the values---
editor.commit();
}
#Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
To get that value into another java file, inside that java file write below code where ever you need it..
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
int pos=prefs.getInt("index", (Integer) null);
String value=prefs.getString("value", "");

Try this code : set adapter to the spinnerName as:
spinnerName=(Spinner)findViewById(R.id.spinnerName);
String []data={"item1","item2","item3","item4","item5"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, data);
spinnerName.setAdapter(adapter);
Now set setOnItemSelectedListener to spinnerName.
spinnerName.setOnItemSelectedListener(new OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), spinnerName.getSelectedItem().toString(), Toast.LENGTH_LONG).show();
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
// pass value of selected spinnerItem to other Activity.
intent.putExtra("spinnerItem", spinnerName.getSelectedItem().toString());
startActivity(intent);
}
#Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});

Sorry, I posted it wrong.
Pls try this.
String []data={"item1","item2","item3","item4","item5"};
spinner.setAdapter(adaptador);
spinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,
android.view.View v, int position, long id) {
mData.setText("Selected: " + data[position]);
}
public void onNothingSelected(AdapterView<?> parent) {
mData.setText("");
}
});

Use this:
final String text = ((YourAdapter) spinner.getAdapter()).getItem(spinner.getSelectedItemPosition());

This should work:
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long id) {
String value = (TextView)view.getText().toString();
}

final Equipamento[] eqptos = eqptoDao.list();
List<String> labels = new ArrayList<String>();
for(Equipamento eqpto : eqptos)
{
labels.add(eqpto.getDescricao());
}
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item,labels);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
//to get value of spinner
eqptos[Integer.parseInt("" + spinner.getSelectedItemId())].getEquipamento()

Related

How Can i Load ListView Dynamically Depends on the Value from Spinner

I have a Spinner,Edit Text, Button and a List View in a View. I want to Load my ListView from database Depends on the value from spinner. and i'm doing add operation on List View also.
My Doubt is that i wanted to know how can i load my list view depends on the data from spinner?
public class myClass extends ListActivity implements OnClickListener {
DatabaseFAM db;
Spinner No;
String Selected;
EditText user;
Button btnAdd;
String strselected;
ArrayList<String> list =new ArrayList<String>();
ArrayAdapter<String> adapterLV;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myews);
db = new DatabaseFAM(getApplicationContext());
initVar();
}
private void initAudit2Var() {
No = (Spinner) findViewById(R.id.station);
user = (EditText) findViewById(R.id.er);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(this);
adapterLV = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, list);
setListAdapter(adapterLV);
final DatabaseFAM db = new DatabaseFAM(getApplicationContext());
List<String> station = db.getAllstation();
ArrayAdapter<String> stationAdapter = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_spinner_item,
station);
stationAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
No.setAdapter(stationAdapter);
No.setOnItemSelectedListener(new OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Selected = arg0.getItemAtPosition(
arg2).toString();
list.clear();
list=db.getTag(Selected);
adapterLV.notifyDataSetChanged();
}
#Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
you should set Adapter of ListView at the Item selection of the Spinner....
mSpinnerLangAttrValue.setOnItemSelectedListener(new OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
** Add ListAdapter Here **
}
#Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
add onItemSelected event to your spinner.
Depending upon the value of the seletion modify your listView with the required data
use Datasetchanged event on the listview
sp1 = (Spinner)findViewById(R.id.spinner1);
sp1.setOnItemSelectedListener(new OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int pos, long arg3) {
// Load your list here
}}

Want to remove the selected item from Listview

I have used a List and an Arrayadapter to put strings in a Listview. Now I want to remove the selected Item. I have tried the following code, but it's not working well. How can I fix this?
Here's my code:
TextView t1;
String[] temp;
mylist = (ListView) findViewById(R.id.list);
final List<String> wordList = Arrays.asList(temp);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice,
wordList);
delete.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View arg0) {
int index = mylist.getSelectedItemPosition();
int count=mylist.getCount();
for(int i=0;i<=count;i++) {
if (index >= 0) {
t1.setText(wordList.remove(index));
}
adapter.notifyDataSetChanged();
}
}
});
Here's more source code:
public class Edit extends Activity {
SharedPreferences sharedpref;
ListView mylist;
String[] temp;
String name,
ArrayAdapter<String> adapter;
Button save, delete, cancel;
TextView t1;
#Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
mylist = (ListView) findViewById(R.id.list);
cancel = (Button) findViewById(R.id.cancel1);
save = (Button) findViewById(R.id.save1);
delete = (Button) findViewById(R.id.delete1);
t1=(TextView)findViewById(R.id.textView1);
sharedpref = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
name = sharedpref.getString("Visible_selected", "");
String delimiter = "\n";
temp = name.split(delimiter);
mylist.setItemsCanFocus(true);
mylist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
final List<String> wordList = Arrays.asList(temp);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, wordList);
mylist.setAdapter(adapter);
save.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
delete.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View arg0) {
mylist.setOnItemClickListener(new OnItemClickListener() {
private String getSelectedItemOfList;
#Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
getSelectedItemOfList = sortedList.get(arg2).getStr_movieParam();
}
});
cancel.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
}
}
Here's my updates code:
enter code here
delete.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
adapter.remove(getSelectedItemOfList);
adapter.notifyDataSetChanged();
}
});
mylist.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
SparseBooleanArray checkedPositions =mylist.getCheckedItemPositions();
if(checkedPositions.get(arg2)==true){
getSelectedItemOfList = (String) mylist.getItemAtPosition(arg2);
t1.append(getSelectedItemOfList.toString()+"\n");}
}
});
Try to implement the onitemclickListener and get the item id and delete the item clicked in the arrayadapter and next call adapter.notifyDataSetChanged();
Try this...
mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> adapter, View v, int position,
long arg3) {
String value = (String) adapter.getItemAtPosition(position);
adapter.remove(value);
adapter.notifyDataSetChanged();
}
});
I think you should use OnItemClickListener() for the listview so that when you select/click any list item you will get name of selected item then you can perform deletion operation.
Try this.
mylist.OnItemClickListener(listenerOflistView);
private OnItemClickListener listenerOflistView = new OnItemClickListener() {
private String getSelectedItemOfList;
public void onItemClick(AdapterView<?> view, View view1, int pos,
long arg3) {
// TODO Auto-generated method stub
getSelectedItemOfList = mylist.get(pos).toString(); // here you will get selected item name.
}
}
Hope this will help you.
see this code which help you to understand how to remove items in listview.
private ArrayList<String> students = new ArrayList<>();
private ArrayAdapter<String> arrayAdapter;
private ListView myListView;
private int getSelectedIndex = -1;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myListView = (ListView) findViewById(R.id.myListView);
students.add("rahim");
students.add("karim");
students.add("sumon");
students.add("rakib");
students.add("porag");
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, students);
myListView.setAdapter(arrayAdapter);
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "hello " + students.get(position), Toast.LENGTH_LONG).show();
MainActivity.this.getSelectedIndex = position;
for (int i = 0; i < myListView.getChildCount(); i++) {
if(position == i ){
myListView.getChildAt(i).setBackgroundColor(Color.BLUE);
}else{
myListView.getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
}
}
}
});
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);//Menu Resource, Menu
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add:
Toast.makeText(getApplicationContext(), "Item 1 Selected", Toast.LENGTH_LONG).show();
return true;
case R.id.delete:
if(this.getSelectedIndex!=-1){
students.remove(this.getSelectedIndex);
this.getSelectedIndex = -1;
arrayAdapter.notifyDataSetChanged();
myListView.setAdapter(arrayAdapter);
}
return true;
default:
return false;
}
}
I would say the best way to do this (the really best way is a custom adapter) is to keep a copy of your arraylist of items in your class. Then when delete is called remofve the item form your copy of the arraylist and re-init the listview.
First thing i want to tell you that code you have written is wrong...
May be you want the context menu on listview..
if you are getting the position of selected item then you can have
adapter.removeItem(adapter.getItem(position));
adapter.notifyDatasetChanged()
may this help you
replace
delete.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View arg0) {
mylist.setOnItemClickListener(new OnItemClickListener() {
private String getSelectedItemOfList;
#Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
getSelectedItemOfList = sortedList.get(arg2).getStr_movieParam();
}
});
with
mylist.setOnItemClickListener(new OnItemClickListener() {
private String getSelectedItemOfList;
#Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
getSelectedItemOfList = sortedList.get(arg2).getStr_movieParam();
}
});
and
delete.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View arg0) {
adapter.remove(getSelectedItemOfList );
adapter.notifydatasetChanged
}
});
check this one
Try working with this code in the http://appfulcrum.com/2010/09/12/listview-example-3-simple-multiple-selection-checkboxes/
public class ListTest extends Activity {
String selectedItem;
ArrayAdapter<String> adapter;
ArrayList<String> newList = new ArrayList<String>();
ListView l1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_test);
l1 = (ListView) findViewById(R.id.lsvSign);
newList.add("Android");
newList.add("iOS");
newList.add("Mac");
newList.add("Windows");
newList.add("Linux");;
Collections.sort(newList);
adapter = new new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,newList);
l1.setAdapter(adapter);
l1.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
selectedItem = l1.getItemAtPosition(position).toString();
RemoveItem(selectedItem);
}
});
protected void RemoveItem(String item) {
newList.remove(item);
adp2.notifyDataSetChanged();
}
}
}
Try working code: listAdapter.remove(listAdapter.getItem(position));
mainListView.setAdapter( listAdapter );

Get the position of a spinner in Android

I'm trying to get the position (number) of the spinner when selected to use it in another Activity that will display a different map each time depending on the item selected. when I run the application it crashes. this is the first Activity code:
public class TestProjectActivity extends Activity {
public Spinner spinner1;
public Integer number;
private Button valideButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySpinner();
valide_button();
}
public void MySpinner() {
final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.num, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView,
View selectedItemView, int position, long id) {
// Object item = parentView.getItemAtPosition(position);
TestProjectActivity.this.number = spinner1
.getSelectedItemPosition() + 1;
}
public void onNothingSelected(AdapterView<?> arg0) {// do nothing
}
});
}
public void valide_button() {
valideButton = (Button) findViewById(R.id.valide_button);
valideButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(TestProjectActivity.this,
MetroMapActivity.class);
startActivity(intent);
}
});
}
}
The way to get the selection of the spinner is:
spinner1.getSelectedItemPosition();
Documentation reference:
http://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()
However, in your code, the one place you are referencing it is within your setOnItemSelectedListener(). It is not necessary to poll the spinner, because the onItemSelected method gets passed the position as the "position" variable.
So you could change that line to:
TestProjectActivity.this.number = position + 1;
If that does not fix the problem, please post the error message generated when your app crashes.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = findViewById(R.id.button);
spinner = findViewById(R.id.sp_item);
setInfo();
spinnerAdapter = new SpinnerAdapter(this, arrayList);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//first, we have to retrieve the item position as a string
// then, we can change string value into integer
String item_position = String.valueOf(position);
int positonInt = Integer.valueOf(item_position);
Toast.makeText(MainActivity.this, "value is "+ positonInt, Toast.LENGTH_SHORT).show();
}
#Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
note: the position of items is counted from 0.
final int[] positions=new int[2];
Spinner sp=findViewByID(R.id.spinner);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText( arg2....);
}
#Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
if (position ==0) {
if (rYes.isChecked()) {
Toast.makeText(SportActivity.this, "yes ur answer is right", Toast.LENGTH_LONG).show();
} else if (rNo.isChecked()) {
Toast.makeText(SportActivity.this, "no.ur answer is wrong", Toast.LENGTH_LONG).show();
}
}
This code is supposed to select both check boxes.
Is there a problem with it?

Android spinner didn't trigger onItemSelected

In my application, I use spinner, it shows with spinner.performClick(). After a lot of tries I noticed that my code does not trigger onItemSelected method, Then I tried to add #Override annotation but it returns as error and says delete that annotation. here is that code:
Spinner colorSpinner = new Spinner(this);
ColorFriendsSpinnerAdapter adapter = new ColorFriendsSpinnerAdapter(getApplicationContext(), liste, R.layout.color_dropdown, new String[] { "Icon" }, new int[] { R.id.colorDropdown });
//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
colorSpinner.setAdapter(adapter);
colorSpinner.performClick();
colorSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
editColorXml(position);
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Thanks for any help, and sorry for my English.
A sample of ItemSelectedListner , no need of override annotation .
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
set listener before colorSpinner.performClick() . in this code spinner will be clicked at the moment where no listener is set .
Try this Code..
final List<String> list=new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
list.add("Item 4");
list.add("Item 5");
final Spinner sp1= (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adp1 = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,list);
adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp1.setAdapter(adp1);
sp1.setOnItemSelectedListener(new OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), list.get(position), Toast.LENGTH_SHORT).show();
}
#Override
public void onNothingSelected(AdapterView<?> parent) {
}
});

Spinner is not working in android

Spinner is not working. Here is my code:
public class second extends Activity{
Spinner spin;
String[] str;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
spin = (Spinner) findViewById(R.id.spin);
str = new String[] {"bike","car"};
spin.setAdapter(new ArrayAdapter<CharSequence>(this, android.R.layout.simple_dropdown_item_1line, str));
spin.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
}
}
The only mistake you made is you have set different event listener..
The Listener OnItemClickListener is for ListView..
For Spinner you have to set OnItemSelectedListener ..
Try replacing OnItemClickListener to setOnItemSelectedListener like :
spin.setOnItemSelectedListener (new OnItemSelectedListener() {
public void onItemClick(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
The problem is here,
spin.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
Try replacing it as follows,
spin.OnItemSelectedListener (new OnItemSelectListener() {
public void onItemSelect(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
Here is the problem in your oncreate() method:
spin = (Spinner) findViewById(R.id.spin);
You assign the result to spinner which is a local variable/reference here. main.spinner class field is still null. This is why you have NullPointerException in calculate() method.
Replace the line above with:
this.spin = (Spinner) findViewById(R.id.spin);
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item,androidBooks);
spin.setAdapter(adapter);
Try this one
spinner = (Spinner) findViewById(R.id.spinner);
List<String> categories = new ArrayList<String>();
categories.add("--Qualification--");
categories.add("High School");
categories.add("Higher Secondary/PUC");
categories.add("Diploma");
categories.add("Degree");
categories.add("Master Degree");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.spinnertext, categories);
adapter.setDropDownViewResource(android.R.layout.select_dialog_item);
spinner.setAdapter(adapter);
Check Out on this link

Categories

Resources