package de.tum.in.tumcampusapp.activities; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import java.util.Collections; import java.util.List; import de.tum.in.tumcampusapp.R; import de.tum.in.tumcampusapp.activities.generic.ActivityForSearchingTumOnline; import de.tum.in.tumcampusapp.adapters.LecturesListAdapter; import de.tum.in.tumcampusapp.adapters.NoResultsAdapter; import de.tum.in.tumcampusapp.auxiliary.LectureSearchSuggestionProvider; import de.tum.in.tumcampusapp.models.tumo.LecturesSearchRow; import de.tum.in.tumcampusapp.models.tumo.LecturesSearchRowSet; import de.tum.in.tumcampusapp.tumonline.TUMOnlineConst; import de.tum.in.tumcampusapp.tumonline.TUMOnlineRequest; import se.emilsjolander.stickylistheaders.StickyListHeadersListView; /** * This activity presents the users' lectures using the TUMOnline web service * the results can be filtered by the semester or all shown. * * This activity uses the same models as FindLectures. * * HINT: a TUMOnline access token is needed */ public class LecturesPersonalActivity extends ActivityForSearchingTumOnline<LecturesSearchRowSet> { private final static String P_SUCHE = "pSuche"; /** UI elements */ private StickyListHeadersListView lvMyLecturesList; public LecturesPersonalActivity() { super(TUMOnlineConst.LECTURES_PERSONAL, R.layout.activity_lectures, LectureSearchSuggestionProvider.AUTHORITY, 4); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // bind UI elements lvMyLecturesList = (StickyListHeadersListView) findViewById(R.id.lvMyLecturesList); // handle on click events by showing its LectureDetails lvMyLecturesList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> a, View v, int position, long id) { Object o = lvMyLecturesList.getItemAtPosition(position); LecturesSearchRow item = (LecturesSearchRow) o; // set bundle for LectureDetails and show it Bundle bundle = new Bundle(); // we need the stp_sp_nr bundle.putString(LecturesSearchRow.STP_SP_NR, item.getStp_sp_nr()); Intent intent = new Intent(LecturesPersonalActivity.this, LecturesDetailsActivity.class); intent.putExtras(bundle); // start LectureDetails for given stp_sp_nr startActivity(intent); } }); onStartSearch(); } @Override protected void onStartSearch() { enableRefresh(); requestHandler = new TUMOnlineRequest<>(TUMOnlineConst.LECTURES_PERSONAL, this, true); requestFetch(); } @Override protected void onStartSearch(String query) { disableRefresh(); requestHandler = new TUMOnlineRequest<>(TUMOnlineConst.LECTURES_SEARCH, this, true); requestHandler.setParameter(P_SUCHE, query); requestFetch(); } @Override public void onLoadFinished(LecturesSearchRowSet response) { if (response == null || response.getLehrveranstaltungen() == null) { // no results found lvMyLecturesList.setAdapter(new NoResultsAdapter(this)); } else { // Sort lectures by semester id List<LecturesSearchRow> lectures = response.getLehrveranstaltungen(); Collections.sort(lectures); // set ListView to data via the LecturesListAdapter lvMyLecturesList.setAdapter(LecturesListAdapter.newInstance(this, lectures)); } } }