I am trying to create an Activity that will serve as a daily calendar view. When a user clicks left or right, they will be sent tomorrow or yesterday and so on through the calendar.
I decided to use ViewPager / PagerAdapter to process the views and control the paging in days.
As part of setting Day View, the application will go to my API and request any meetings for that day. Appointments will be returned and displayed on that day. To get data from the API, I use AsyncTask. So instantiateItem()
calls the API and sets an empty listView. BroadcastReceiver
then captures the response, analyzes the data and displays it.
The problem I am facing is that the first displayed view is always empty. The views on the left or on the right are filled, and if I go with two positions in any direction, itβs enough for the original to scan to destroy, and then return to the original view, it has data. Why? How to make the first submission complete without moving 2 spaces?
Here is my activity. Currently, I don't parse the data returned from the API, just modeling with a list of strings on average.
public class MyPagerActivity extends Activity { private ViewPager myPager; private static int viewCount = 1000; private Context ctx; private MyPagerAdapter myAdapter; private static final String tag = "MyPagerActivity"; private static final String apiAction = "getAppointmentsForDate"; private static final String apiUri = "https://myAPI.com/api.php"; private static final String resource = "appointments"; private static final String action = "getappointmentsfordate"; private static final String date = "20120124"; private ProgressDialog progress; private SharedPreferences loginPreferences; private SharedPreferences.Editor loginPreferencesEditor; private ListView v; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ctx = this; myAdapter = new MyPagerAdapter(); myPager = (ViewPager) findViewById(R.id.myPager); myPager.setAdapter(myAdapter); myPager.setCurrentItem(500); } private class MyPagerAdapter extends PagerAdapter { @Override public int getCount() { return viewCount; } @Override public Object instantiateItem(View collection, int position) { try { Log.d(tag, "trying http connection"); loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE); loginPreferencesEditor = loginPreferences.edit(); String authToken = loginPreferences.getString("authToken", ""); String staffOrRoomsId = loginPreferences.getString("staffOrRoomsId", ""); String staffOrRoomsIdName = loginPreferences.getString("staffOrRoomsIdName", ""); HttpPost apiRequest = new HttpPost(new URI(apiUri)); List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("authToken", authToken)); parameters.add(new BasicNameValuePair("resource", resource)); parameters.add(new BasicNameValuePair("action", action)); parameters.add(new BasicNameValuePair("date", date)); parameters.add(new BasicNameValuePair(staffOrRoomsIdName, staffOrRoomsId)); apiRequest.setEntity(new UrlEncodedFormEntity(parameters)); RestTask task = new RestTask(ctx, apiAction); task.execute(apiRequest);
Thanks for taking the time to review this issue!