如何使用onItemClickListener存储ListView中可点击的项目?

5

如何在listView中存储可点击项(多个)的值,并在下一个Activity的listView中显示这些项。我尝试过,但只得到了一个值(如果我点击更多的项,则只显示最后一个),我使用了String[]类型的全局变量myval。

GlobalClass

class GlobalClass extends Application {
     public static String[] myval;
}

主页活动

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);



        }
    });
    }
   }

感谢您的提前帮助。
4个回答

3
在列表项中点击
 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]);
                  }

首先要这样做:
在您的活动中,创建之前声明数组列表。
代码示例:

// 在活动中声明数组列表

    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()]);

}
    });

2

每当ListView上的项目被点击时,都会调用OnItemClick()方法。每次调用OnItemClick()方法时,您都在创建S5数组。之后,您将使用仅具有最新单击值的新创建的数组覆盖GlobalClass.myval。为了收集所有值,请维护全局数组。您还可以直接将已单击的值添加到GlobalClass.myval中(假设它是所需类型的数组)。另一个建议是维护List而不是数组。


1

将内容添加到ListView,然后为每个ListItem值使用onItemClickListener。您可以通过以下代码实现目标。

请使用此全局变量代替字符串数组

全局类

 class GlobalClass extends Application {
 public static List<String> myVal = new ArrayList<String>() ;
 }

主页活动

项目点击监听器

   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);

             }
        }); 
    }

现在,所有点击的值都将出现在您的ListArray中。

希望这有所帮助。


1
    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++       
    );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接