The device display is tiny. So you don't need to fetch every records to start. Just the few that fit the user's initial visible view (maybe the next few above and below for scrolling), and maybe some pre-processed stats on how many for each group/letter, etc. It's the lazy loading technique.
You can preprocess, index and compress all this info on the server before it's downloaded to the device, and download in the background (or require the user to do any long configuration downloads after installation and before first using the app). Then run offline. If the server timestamps all new data and changes, the app only has to download smaller updates if needed.
Thanks for suggesting i will try with lazy loading technique.