Android Question Sideways wheel picker?

AKJammer

Active Member
Licensed User
Longtime User
Hey All,
I'm trying to get some ideas on how to work this. I have an app that is used to judge contests. Each judge gets a list of names along with their bib numbers and they have to rank them 1 through xx. My current iteration worked fine, the judge selected the contestant, then picked the placement number down at the bottom of the screen. But then I was told the number of contestants would go from max of 20 to max of 80. As you can see from the image, anything over 20 contestants the font gets so small for the placement numbers that they can't determine what number they're choosing.
So I'm trying to come up with something else. One idea I had was to use a wheel or some such on each line. I have a mockup of that in the file below. I found the ASWheelPicker library, which is pretty close, but would need to be able to select side to side due to space.

Has anyone seen something that would work? Either a sideways wheel or something else that would work in the space I've got?

Thanks,
Jim
 

Attachments

  • final mockup.pdf
    68.7 KB · Views: 138
  • Tablet, can't read.JPG
    435.3 KB · Views: 207

Alexander Stolte

Expert
Licensed User
Longtime User
Plus minus button?



Otherwise I could try to extend the following library to horizontal scrolling
 
Upvote 0

William Lancee

Well-Known Member
Licensed User
Longtime User
Ranking any set of 80 items is quite a mental challenge.

Mark based games like competitive figure skating assign a score to each contestant (based on very specific criteria).
Contestants are ranked based on their scores. These are simply sorted in descending order.
If this is how you would go, all you need is a B4XSlider beside each contestant in the list.
Then the judge would be able to fine tune the rank by sliding between mark points.

It would be nice that every time a score is giving, the contestant is moved to the top of the list in sorted order.
A button that would scroll to the top would also be nice.
 
Upvote 0

AKJammer

Active Member
Licensed User
Longtime User
I agree, but it's the World Swing Dance Council who sets the requirements, I'm just trying to implement them. They just changed the rules where the Chief Judge is required to raw score all the preliminary rounds. The other judges just have to say Yes/No for a callback. In the finals where everyone is ranked, there usually isn't more than 10 people, but it has to get whittled down to that. It's the Chief Judge's prelim stuff that's giving me fits because early rounds can have have a lot of people in it.
 
Upvote 0

AKJammer

Active Member
Licensed User
Longtime User
What is the raw score range the Chief uses?
Technically it would be 1 .. number of competitors. So for 30 competitors 1-30. That's how I'll rank them behind the scenes. But I want to give them some flexibility so I was thinking they could go from 1-99. Then, as long as all the numbers were different when they submit, I would just rack and stack them to the 1-30 rank. I was also considering giving them a decimal bump so if they had say 5 competitors ranked 1,2,3,4,5 and they decided that this other person should be third, they could go 2.5 and slide it in instead of having to move everyone else down one. Once again, once they submit I would store it as 1-30. Based on what Alexander said above I realized that maybe I could just use simple buttons and do something like the attached picture. I'm sure there's got to be something more elegant than this though.
 
Upvote 0

William Lancee

Well-Known Member
Licensed User
Longtime User
Yes the buttons would work, but going through 0 to 100 will take a bit of time.
Take a look at B4XSeekbar.

The AS RangeSeekbar with range 0 to 100 may be a good choice. Or you could customize B4XSeekbar yourself.

https://www.b4x.com/android/forum/threads/b4x-xui-as-rangeseekbar.136336/

After the judge rates the current performer, you could rearrange the listview to so that the performer moves to the top (in order of rated performers)
That would be helpful.
 
Upvote 0

emexes

Expert
Licensed User
Longtime User
Here is an example

Not bad for an old codger

All I can add is perhaps the list should reposition so that the first of the unscored competitors is located in the middle of the screen, rather than the list be repositioned to the top.

Reasoning being, the scorers are going to get mighty tired of having to scroll down further and further as each competitor is scored.

But I can see that it's nice to have an instant view of the running best scores too.

I have an idea for covering both bases, but also perhaps I am misunderstanding the scoring process and jumping the gun about a non-issue.

Also: I probably would have used a UDT to store the data, and store the data in a list rather than in the CLV. Or perhaps I am reading it wrong.

Anyway, brilliant program regardless, better than what I was thinking, which was to drag the panels up or down to rank them.
 
Upvote 0

emexes

Expert
Licensed User
Longtime User
I have an idea for covering both bases

What I was thinking was:

the contestants and associated data is stored in a list, and the CLV is recreated each time a change is made, eg:

1/ if you can display all the scored contestants, and at least one or two of the yet-to-be-scored contestants, then no problem

eg if 40 contestants, and CLV can display 10 of them on screen, and 7 of them are scored, then display all 7 scored contestants and the first 3 unscored contestants, with the other 30 unscored contestants being off-screen below (at least until they're scrolled into view)

2/ if you can't do that, then replace the lower scored contestants with a single placeholder "..." CLV entry
eg if 40 contestants, and CLV can display 10 of them on screen, and 12 of them are scored, then load the CLV up with:

7 scored contestants
1 placeholder "..." entry to represent the remaining 5 scored contestants
2 first unscored contestants (1 would be enough, but 2 gives a visual clue that we're not at the end of the contest yet)
30 remaining unscored contestants (off-screen)

and if the judge clicks on the placeholder entry, then the CLV is filled will all 30 contestants ie no placeholder

Perhaps even include the last scored contestant as well, instead of the 7th score contestant, so that the judge can see the range of scores assigned so far.


On the one hand I'm itching to code that up; on the other hand, you're probably adding ideas to your example at the same time, and we'd end doing things twice.

Plus, of course, it's your baby, and I have sometimes been known to take up a challenge and run too far with it. 🫣

And the clinching reason: it's dinner time here, and as much as I love programming, I don't love it enough to starve over it.
 
Upvote 0

emexes

Expert
Licensed User
Longtime User
It's midnight yikes 1.20am here and I should be going to sleep.

I am with you on the waiting for elaboration. No point doing enhancements if judges are happy with scrolling for the occasional contest that has more than a screenful of comtestants to rank.
 
Upvote 0

AKJammer

Active Member
Licensed User
Longtime User
The first picture at the beginning of the thread shows the tablet as I've got it now. There are a couple buttons at the bottom to re-sort the list in rank order or list order. When the dancers are on the floor, they're brought out in heats and lined up in bib order, so it's easier for the judges to find the persons bibs and judge them when they're in list order. After they're done, they'll put them in rank order to verify who they may have picked for the top 5 or so before they submit. Everything is based on the bib, there's too many people for the judge to actually know who the dancers are.
 
Upvote 0

AKJammer

Active Member
Licensed User
Longtime User
In my current system, the scores are stored in a list and are backed up to a temporary table on the main database every 10 seconds. The judges don't have a problem scrolling up and down to find the competitors because everything is based on the bib, that's how they find the person. If it was rank sorted each time then it would be more difficult to find an individual bib.
 
Upvote 0

emexes

Expert
Licensed User
Longtime User
Not sure of the fine movement between small numbers.

The scores can be amended, if the judge doesn't quite get the slider number right first time. In fact, you might want to lock out the ability to amend scores, except for the last scored contestant. Maybe have a pop-up confirmation box for the earlier scored contestants, to check that the judge really wants to amend the score and hasn't just accidentally touched the screen.
 
Upvote 0

William Lancee

Well-Known Member
Licensed User
Longtime User
Here is a version that has the sliders hidden until the row is clicked.
Note that since the slider is still there for rated competitors, the judge can modify the order by adjusting the score.

But, for fine tuning the order, that slider could be changed to a updown view.
 

Attachments

  • scorev2.zip
    38.1 KB · Views: 85
Upvote 0

AKJammer

Active Member
Licensed User
Longtime User
How many contestants per judge? Did that increase 300% as well?

Does each judge have their own tablet, with only their specific "list of names" contestants?
At our regional event we only have about 20 people per role (lead/follow), but they want to use the program at other national events (US Open) where they may have a lot more. Only the Chief Judge has to raw score the preliminary rounds, the other judges, on their own tablets, just has to look at all of them and mark as a Yes, No or Alternate. Yes is given 10 pts, No 0 and Alternates 1,2,3 are given varying numbers. So it's only a pain for the Chief Judge. For the Finals, all judges rank the competitors, but by that time there's usually only 10-15 couples on the floor. For simplicity sake, I'll probably change how I present those to the judges using this new method as well so I don't have to maintain two different methods.
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…