简体   繁体   中英

My spinner loads only the first data(string) from the List

Courseprof.java:

This is iterating my data and putting it onto the spinner, but when i run the app it only loads the first data from the list. For example: i have strings on my list which are ["r12 cs100 a20","r02 cs120 a40","r90 cs001 a30". Only "r12 cs100 a20"] was loaded in my spinner. but I want to load all the data in my list :'(

@SuppressWarnings({ "rawtypes" })
    public void addData(ArrayList<Properties> courseusers) {
        for (Iterator i = courseusers.iterator(); i.hasNext();) {
            Properties p = (Properties) i.next();

            Spinner mySpinner = (Spinner) findViewById(R.id.spincourse);

             List<String> itemList =  Arrays.asList(p.getCourseId()+" "+p.getRoom()+" "+p.getSection());
             ArrayAdapter<String> adapter;
              adapter = new ArrayAdapter(this, 
                     android.R.layout.simple_spinner_item,
                     itemList);

             adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

             mySpinner.setAdapter(adapter);


        }
    }

Properties.java:

String roomid,courseid,sectionid;
    int profid;
    public String getRoom() {
        return roomid;
    }
    public void setRoom(String roomid) {
        this.roomid = roomid;
    }

    public String getCourseId() {
        return courseid;
    }
    public void setCourse(String courseid) {
        this.courseid = courseid;
    }
    public String getSection() {
        return sectionid;
    }
    public void setSection(String sectionid) {
        this.sectionid = sectionid;
    }

Because you are creating list with single element in every iteration of loop along with adapter and spinner initialization .

Solution : Move spinner and adapter code outside loop (at the end) and use mutable list to add data in loop.

// move initialization of references before loop
Spinner mySpinner = (Spinner) findViewById(R.id.spincourse);
List<String> itemList =  new ArrayList<>();

for (Iterator i = courseusers.iterator(); i.hasNext();) {
    Properties p = (Properties) i.next();
    // add items to list
    itemList.add(p.getCourseId()+" "+p.getRoom()+" "+p.getSection());     
}
// data list is ready so setup adapter and display spinner
ArrayAdapter<String> adapter;
  adapter = new ArrayAdapter(this, 
         android.R.layout.simple_spinner_item,
         itemList);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

mySpinner.setAdapter(adapter);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM