How to reorder the Listbox data ?

3 views (last 30 days)
Lavanya
Lavanya on 7 Jul 2022
Commented: Kevin Holly on 14 Jul 2022
I have created GUI:
  • ListBox created, and Move up button in matlab as '.m' it is working
Code:
function moveUp(src,event,lbox)
index_move = ismember(1:length(lbox.Items),lbox.Value);
index_shift = circshift(index_move,-1);
position = 1:length(lbox.Items);
if isequal(lbox.Value,1)
position = circshift(position,-1);
else
value_up = position(index_move);
value_down = position(index_shift);
position(index_shift) = value_up;
position(index_move) = value_down;
end
set(lbox,'Items',lbox.Items(position));
set(lbox,'Value',find(index_shift));
end
  • But the same code is not working in Matlab app designer
Code:
index_move = ismember(1:length(app.ListBox.Items), size(app.ListBox.Value));
index_shift = circshift(index_move,-1);
position = 1:length(app.ListBox.Items);
if isequal(app.ListBox.Value,1)
position = circshift(position,-1);
else
value_up = position(index_move);
value_down = position(index_shift);
position(index_shift) = value_up;
position(index_move) = value_down;
end
set(app.ListBox.Items,app.ListBox.Items(position));
set(app.ListBox.Value,find(index_shift));
Kindly suggest a way for this?

Accepted Answer

Kevin Holly
Kevin Holly on 7 Jul 2022
The following code worked as a callback function for me.
index_move = ismember(app.ListBox.Items, app.ListBox.Value);
index_shift = circshift(index_move,-1);
position = 1:length(app.ListBox.Items);
if isequal(app.ListBox.Value,1)
position = circshift(position,-1);
else
value_up = position(index_move);
value_down = position(index_shift);
position(index_shift) = value_up;
position(index_move) = value_down;
end
set(app.ListBox,'Items',app.ListBox.Items(position));
set(app.ListBox,'Value',app.ListBox.Items(find(index_shift)));
  10 Comments
Kevin Holly
Kevin Holly on 14 Jul 2022
If you are using the function in both apps, I would suggest saving the function as a file that is called from each app. You can change the input to the function based on what app you call from (e.g. updateRunOrder(app,orderconnection,newnames) or updateRunOrder(app.Callingapp,orderconnection,newnames)).

Sign in to comment.

More Answers (0)

Categories

Find more on Migrate GUIDE Apps in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!