package uk.ac.cam.echo.fragments; import android.app.Fragment; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.ProgressBar; import uk.ac.cam.echo.ConversationAdapter; import uk.ac.cam.echo.R; import uk.ac.cam.echo.Toaster; import uk.ac.cam.echo.activities.ConversationListActivity; import uk.ac.cam.echo.client.ClientApi; import uk.ac.cam.echo.data.Conversation; import uk.ac.cam.echo.onListLoadedListener; import java.util.ArrayList; import java.util.List; public class ConversationListFragment extends Fragment implements OnItemClickListener { private Context context; private static ClientApi api; private Communicator comm; private ConversationAdapter adapter; private ListView listView; private ProgressBar listProgress; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { context = getActivity(); return inflater.inflate(R.layout.conv_listview_layout, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); listView = (ListView)getView().findViewById(R.id.convListView); listProgress = (ProgressBar)getView().findViewById(R.id.listProgress); Log.d("SEARCH", "Frag onViewCreated"); //new PerformSearch().execute(); } public void getAllConversations() { Log.d("SEARCH", "gettingAllConversations()"); new PerformSearch().execute(); } public void performSearch(String query) { Log.d("SEARCH", "performingSearch()"); new PerformSearch().execute(query); } @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Log.d("ConversationListFragment", "clicked on "+ id); comm.respond(id); } public void openConversation(long id) { int pos = adapter.getPosition(id); listView.performItemClick( listView.getAdapter().getView(pos, null, null), pos, id); } public interface Communicator { public void respond(long id); } public void setCommunicator(Communicator comm) { this.comm = comm; } public ClientApi getApi() { return api; } public void setApi(ClientApi clientApi) { api = clientApi; } public ConversationAdapter getAdapter() {return adapter; } private class PerformSearch extends AsyncTask<String, Void, List<Conversation>> { ArrayList<String> some = new ArrayList<String>(); @Override protected List<Conversation> doInBackground(String... params) { List<Conversation> result; if(params.length == 0) { Log.d("SEARCH","params = 0"); result = api.conferenceResource.getConversations(1); Log.d("SEARCH", "all conversations downloaded"); } else { String query = params[0]; Log.d("SEARCH","params > 0: searching :" + query); result = api.conferenceResource.search(1, query, 10); Log.d("SEARCH", "all search results downloaded"); } for(uk.ac.cam.echo.data.Conversation c : result) some.add(c.getName()); Log.d("ConversationListFragment", result.get(0).getName()); Log.d("ConversationListFragment", result.size()+""); return result; } @Override protected void onPostExecute(List<Conversation> result) { // update list view super.onPostExecute(result); if(adapter == null) { //adapter = new ConversationAdapter(context, R.layout.conv_list_row, result); adapter = ConversationAdapter.newInstance(context, R.layout.conv_list_row, result, api); listView.setAdapter(adapter); adapter.setListViewListener((ConversationListActivity)getActivity()); listView.setOnItemClickListener(ConversationListFragment.this); listView.setVisibility(View.VISIBLE); listProgress.setVisibility(View.GONE); Log.d("SEARCH", "createdListView PerformSearch"); } else { Log.d("SEARCH", "updatedListView PerformSearch"); adapter.updateList(result); } } } }