Reputation: 277
How to store clickable items(many) value in listView and Display the Items in the next Activity listView .I tried that but i got only one value(if i clicked more items, the last one only displayed)from the previous Activity listView.i used String[] type GlobalVariable myval;
GlobalClass
class GlobalClass extends Application {
public static String[] myval;
}
HomeActivity
public class HomeActivity extends Activity {
String[] Category={"----SELECT---- ","BEVERAGES","BREAKFAST","LUNCH","DINNER","DESSERTS","APPETIZERS & SIDES"};
String[] Beverage={"PEPSI","COKE","LASSI","FALOODA","BUTTER MILK","GREEN TEA","BADAM MILK","MASALA CHAI" };
String[] Breakfast={"SIRLOIN & EGG","CFS STEAK & EGG","T-BONE & EGG","TWO EGGS BREAKFAST","2EGG W/MEAT","BEL WAFFLE","BEL WAFFLE W/MEAT","BLUEBERRY CAKE","CAKES","FABULOUS FRENCH TST","MOONS","FRENCH TST"};
String[] Lunch={" CRAB CAKE SANDWICH","TUSCAN GRILLED CHICKEN PANINI","SOUTHWEST TURKEY CLUB"," LOBSTER ROLL","TUNA MELT"," FRENCH DIP","YOUR OWN SANDWICH"};
String[] Dinner={"DUBLIN BAY PRAWN","CRAB FROM BRITTANY","WHITE ASPARAGUS","BLEWIT MUSHROOM","JOHN DORY FISH","MONKFISH","VEAL SWEET BREAD","LAMB","PIGEON FRY"};
String[] Desserts={"ECHOURGNAC CHEESE","HAZELNUT","GARIGUETTE STRAWBERRY","MOUSSE & ZEST","APRICOT","CHOCOLATE"};
String[] Appetizers={"Greek Artichoke Spinach","Seafood Appetizers","Tapenade Flatbread","Cranberry Blue Cheese","Fig and Blue Cheese","Sun-Dried Tomato","Tropical Crab Rangoon"};
Spinner spinner;
ListView l1;
Button b1;
Button b2;
Button b3;
EditText e1;
EditText e2;
String[] item;
int myid;
/** Called when the activity is first created. **/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
spinner = (Spinner) findViewById(R.id.spinnerCategory);
l1=(ListView) findViewById (R.id.list);
b1=(Button)findViewById(R.id.button3);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button1);
e1=(EditText)findViewById(R.id.editText1);
e2=(EditText)findViewById(R.id.editText2);
ArrayAdapter<String> adapter = new ArrayAdapter<String> this,android.R.layout.simple_spinner_item, Category);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
final ArrayAdapter<String> bever = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Beverage);
// Assign adapter to ListView
final ArrayAdapter<String> Breakf = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Breakfast);
final ArrayAdapter<String> lunc= new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Lunch);
final ArrayAdapter<String> Dinn= new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Dinner);
final ArrayAdapter<String> Dessert = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Desserts);
final ArrayAdapter<String> Appet= new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Appetizers);
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parent, View arg1, int pos,long id) {
String Text = parent.getSelectedItem().toString();
if(Text.equals("----SELECT----")) {
}
else if(Text.equals("BEVERAGES")){
l1.setAdapter(bever);
return;
}
else if(Text.equals("BREAKFAST")){
l1.setAdapter(Breakf);
return;
}
else if(Text.equals("LUNCH")){
l1.setAdapter(lunc);
return;
}
else if(Text.equals("DINNER")){
l1.setAdapter(Dinn);
return;
}
else if(Text.equals("DESSERTS")){
l1.setAdapter(Dessert);
return;
}
else if(Text.equals("APPETIZERS & SIDES")){
l1.setAdapter(Appet);
return;
}
}
public void onNothingSelected(AdapterView<?> arg0){
}
});
l1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), "SELECTED :: " +((TextView) view).getText(), Toast.LENGTH_SHORT).show();
String s2=(String) ((TextView) view).getText();
// String ss=Integer.toString(myid);
String[] S5=new String[]{s2};
//String[] S1=new String[]{s2};
GlobalClass.myval=S5;
for (int i=0;i<GlobalClass.myval.length;i++){
System .out.println("Clicked-->"+GlobalClass.myval[i]);
}
//System.out.println("Clicked:" + GlobalClass.myval);
// System.out.println("items--"+l1.getItemIdAtPosition(position));
//i.putExtra("item", item);
//GlobalClass.myval=(String[]) l1.getSelectedItem();
//GlobalClass.myval=a1;
//String[] item = (String[]) (l1.getItemAtPosition(position));
//String[] a2=item;
//GlobalClass.myval=a2;
}
});
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String tno = e1.getText().toString();
int tn = Integer.parseInt(tno);
Intent i=new Intent(getApplicationContext(),TicketActivity.class);
Bundle b=new Bundle();
b.putInt("Table No:", tn);
i.putExtras(b);
String et= e2.getText().toString();
int et1 = Integer.parseInt(et);
Bundle be=new Bundle();
be.putInt("Guest:", et1);
i.putExtras(be);
startActivity(i);
}
});
}
}
thanks in advance
Upvotes: 5
Views: 3673
Reputation: 4433
There is one more way we can add items to string array like this
int i = 0 ;
String[] S5;
fix its size
else if(Text.equals("BEVERAGES")){
l1.setAdapter(bever);
return;
}
else if(Text.equals("BREAKFAST")){
l1.setAdapter(Breakf);
S5=new String[]{Breakf.size()};
return;
}
else if(Text.equals("LUNCH")){
l1.setAdapter(lunc);
S5=new String[]{lunc.size()};
return;
}
else if(Text.equals("DINNER")){
l1.setAdapter(Dinn);
S5=new String[]{Dinn.size()};
return;
}
else if(Text.equals("DESSERTS")){
l1.setAdapter(Dessert);
S5=new String[]{Dessert.size()};
return;
}
else if(Text.equals("APPETIZERS & SIDES")){
l1.setAdapter(Appet);
S5=new String[]{Appet.size()};
return;
}
l1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), "SELECTED :: " +((TextView) view).getText(), Toast.LENGTH_SHORT).show();
String s2=(String) ((TextView) view).getText();
// String ss=Integer.toString(myid);
//String[] S1=new String[]{s2};
// it add a new element to string array all the time list item is clicked
S5[i] = s2 ;
i++
);
Upvotes: 1
Reputation: 4433
In List item click
l1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), "SELECTED :: " +((TextView) view).getText(), Toast.LENGTH_SHORT).show();
String s2=(String) ((TextView) view).getText();
// String ss=Integer.toString(myid);
you add values to a string array like
String[] S5=new String[]{s2};
this will ovverride the previous element the all time shall
not add any other value
//String[] S1=new String[]{s2};
GlobalClass.myval=S5;
for (int i=0;i<GlobalClass.myval.length;i++){
System .out.println("Clicked-->"+GlobalClass.myval[i]);
}
do it like this first
// declare array list before on create in your activity
private ArrayList<String> AddedItems = new ArrayList<String>();
l1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), "SELECTED :: " +((TextView) view).getText(), Toast.LENGTH_SHORT).show();
when lsit tiem is clicked add it to a array list like
AddedItems.add(((TextView) view).getText());
}
Once all click events are done
before going to next activity
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
convert the string list to string array or whereevr in the activity you want
// create string array from array list
myval= listPar.toArray(new String[AddedItems .size()]);
}
});
Upvotes: 3
Reputation: 10069
Add content to ListView and then use the onItemClickListener for each ListItem Value. You can achieve your goal by below code.
Use this for your global variable instead of string array
Global Class
class GlobalClass extends Application {
public static List<String> myVal = new ArrayList<String>() ;
}
HomeActivity
OnItemClickListener
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String clickedvalue =(String) parent.getItemAtPosition(position);
myVal.add(clickedvalue);
}
});
}
Now All Clicked Values will be in your ListArray.
I hope it helps.
Upvotes: 1
Reputation: 2404
The OnItemClick() gets called everytime an item on a ListView gets clicked. You are creating your S5 array everytime the OnItemClick() method gets called. After that you are overwriting GlobalClass.myval with the newly created array which has only the latest clicked value. For collecting all the values, maintain a global array. You can also add the clicked values in the GlobalClass.myval directly(assuming it is an array of the required type). Another suggestion, maintain a List instead of an array.
Upvotes: 2