package info.justaway.fragment.list; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListView; import android.widget.ProgressBar; import info.justaway.R; import info.justaway.adapter.UserAdapter; import info.justaway.model.TwitterManager; import twitter4j.PagableResponseList; import twitter4j.User; public class UserMemberFragment extends Fragment { private UserAdapter mAdapter; private long mListId; private long mCursor = -1; private ListView mListView; private ProgressBar mFooter; private boolean mAutoLoader = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.list_guruguru, container, false); if (v == null) { return null; } mListId = getArguments().getLong("listId"); // リストビューの設定 mListView = (ListView) v.findViewById(R.id.list_view); mListView.setVisibility(View.GONE); // コンテキストメニューを使える様にする為の指定、但しデフォルトではロングタップで開く registerForContextMenu(mListView); mFooter = (ProgressBar) v.findViewById(R.id.guruguru); mAdapter = new UserAdapter(getActivity(), R.layout.row_user); mListView.setAdapter(mAdapter); new UserListMembersTask().execute(mListId); mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // 最後までスクロールされたかどうかの判定 if (totalItemCount == firstVisibleItem + visibleItemCount) { additionalReading(); } } }); return v; } private void additionalReading() { if (!mAutoLoader) { return; } mFooter.setVisibility(View.VISIBLE); mAutoLoader = false; new UserListMembersTask().execute(mListId); } private class UserListMembersTask extends AsyncTask<Long, Void, PagableResponseList<User>> { @Override protected PagableResponseList<User> doInBackground(Long... params) { try { PagableResponseList<User> userListsMembers = TwitterManager.getTwitter().getUserListMembers(params[0], mCursor); mCursor = userListsMembers.getNextCursor(); return userListsMembers; } catch (Exception e) { e.printStackTrace(); return null; } } @Override protected void onPostExecute(PagableResponseList<User> userListsMembers) { mFooter.setVisibility(View.GONE); if (userListsMembers == null) { return; } for (User user : userListsMembers) { mAdapter.add(user); } if (userListsMembers.hasNext()) { mAutoLoader = true; } mListView.setVisibility(View.VISIBLE); } } }