स्पिनर के OnItemClickListener पर हुक। फिर जांचें कि चयनित आइटम "नई श्रेणी जोड़ें" है या नहीं।
यदि हां, तो नया आइटम जोड़ने के लिए संवाद दिखाएं।
नया आइटम जोड़ते समय
- अंतिम आइटम निकालें "नई श्रेणी जोड़ें"।
- दर्ज की गई नई श्रेणी जोड़ें।
- फिर आइटम को "नई श्रेणी जोड़ें" फिर से जोड़ें।
यह "नई श्रेणी जोड़ें" आइटम को अंतिम के रूप में बना देगा।
कोड नमूना:
लेआउट main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="10" >
<Spinner
android:id="@+id/cmbNames"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
लेआउट spinner_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
गतिविधि वर्ग:
public class MainActivity extends Activity {
private static final String NAME = "name";
private static final String ADD_NEW_ITEM = "Add New Item";
private SimpleAdapter adapter;
private Spinner cmbNames;
private List<HashMap<String, String>> lstNames;
private int counter;
private OnItemSelectedListener itemSelectedListener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
HashMap<String, String> map = lstNames.get(arg2);
String name = map.get(NAME);
if (name.equalsIgnoreCase(ADD_NEW_ITEM)) {
lstNames.remove(map);
counter++;
addNewName(String.valueOf(counter));
addNewName(ADD_NEW_ITEM);
adapter.notifyDataSetChanged();
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
populateList();
cmbNames = (Spinner) findViewById(R.id.cmbNames);
adapter = new SimpleAdapter(this, lstNames, R.layout.spinner_item,
new String[] { NAME }, new int[] { R.id.tvName });
cmbNames.setAdapter(adapter);
cmbNames.setOnItemSelectedListener(itemSelectedListener);
}
private void populateList() {
lstNames = new ArrayList<HashMap<String, String>>();
addNewName("abc");
addNewName("pqr");
addNewName("xyz");
addNewName(ADD_NEW_ITEM);
}
private void addNewName(String name) {
HashMap<String, String> map = new HashMap<String, String>();
map.put(NAME, name);
lstNames.add(map);
}
}
स्रोत
2012-08-24 11:55:37
मैं यह जानता हूँ। लेकिन मैं 'OnItemSlectedListener' में कैसे संभाल सकता हूं केवल एक आइटम का चयन किया? –
जब आप कोई आइटम चुनते हैं, तो आपको वह आइटम मिल जाएगा जो आपने चुना था। उस चयनित आइटम की तुलना अपनी पूर्वनिर्धारित वस्तु के साथ करें क्योंकि यह स्थिर है। यदि चयनित आइटम वह पूर्वनिर्धारित आइटम है, तो अपना कार्य – Braj
करें यह काम नहीं करता है। मुझे लगता है क्योंकि यह 'parent.getItemAtPosition (स्थिति) .toString();' वापसी की स्थिति और इसे स्ट्रिंग में परिवर्तित करें। –