use of com.thebluealliance.androidclient.listitems.ListElement in project the-blue-alliance-android by the-blue-alliance.
the class EventStatsFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Setup views & listeners
View view = inflater.inflate(R.layout.fragment_event_stats, null);
mBinder.setRootView(view);
mListView = (ListView) view.findViewById(R.id.list);
mRadioGroup = (RadioGroup) view.findViewById(R.id.stats_type_selector);
ProgressBar mProgressBar = (ProgressBar) view.findViewById(R.id.progress);
// Or get data if viewing fragment for the first time.
if (mAdapter != null) {
mListView.setAdapter(mAdapter);
mListView.onRestoreInstanceState(mListState);
mRadioGroup.restoreHierarchyState(mRadioState);
mProgressBar.setVisibility(View.GONE);
}
mBinder.setNoDataView((NoDataView) view.findViewById(R.id.no_data));
mListView.setOnItemClickListener((adapterView, view1, position, id) -> {
if (!(adapterView.getAdapter() instanceof ListViewAdapter) || position >= adapterView.getAdapter().getCount() || !(((ListViewAdapter) adapterView.getAdapter()).getItem(position) instanceof ListElement)) {
TbaLogger.d("Can't open stat item");
return;
}
String teamKey = ((ListElement) ((ListViewAdapter) adapterView.getAdapter()).getItem(position)).getKey();
if (TeamHelper.validateTeamKey(teamKey) ^ TeamHelper.validateMultiTeamKey(teamKey)) {
teamKey = TeamHelper.baseTeamKey(teamKey);
startActivity(TeamAtEventActivity.newInstance(getActivity(), mEventKey, teamKey));
}
});
return view;
}
use of com.thebluealliance.androidclient.listitems.ListElement in project the-blue-alliance-android by the-blue-alliance.
the class SearchResultsActivity method updateQuery.
private void updateQuery(final String query) {
currentQuery = query;
String preparedQuery = Utilities.getPreparedQueryForSearch(query);
ArrayList<ListItem> listItems = new ArrayList<>();
// Teams
Cursor teamQueryResults = mDb.getMatchesForTeamQuery(preparedQuery);
if (teamQueryResults != null && teamQueryResults.moveToFirst()) {
teamQueryResults.moveToPosition(-1);
teamsHeader = new SearchResultsHeaderListElement(getString(R.string.teams_header));
if (teamQueryResults.getCount() > MAX_RESULTS_PER_CATEGORY) {
teamsHeader.showMoreButton(true);
teamsHeader.setMoreCount(teamQueryResults.getCount() - MAX_RESULTS_PER_CATEGORY);
} else {
teamsHeader.showMoreButton(false);
}
listItems.add(teamsHeader);
TeamRenderer teamRenderer = new TeamRenderer(null);
while (teamQueryResults.moveToNext()) {
// Limit ourselves to a certain number of teams
if (teamQueryResults.getPosition() >= MAX_RESULTS_PER_CATEGORY) {
break;
}
String key = teamQueryResults.getString(teamQueryResults.getColumnIndex("_id"));
Team team = mDb.getTeamsTable().get(key);
if (team == null) {
// Don't display models that don't exist anymore and delete them from search indexes
team = new Team();
team.setKey(key);
mDb.getTeamsTable().deleteSearchIndex(team);
continue;
}
listItems.add(teamRenderer.renderFromModel(team, TeamRenderer.RENDER_BASIC));
TbaLogger.d("titles: " + teamQueryResults.getString(teamQueryResults.getColumnIndex(Database.SearchTeam.TITLES)));
}
teamQueryResults.close();
} else {
teamsHeader = new SearchResultsHeaderListElement(getString(R.string.teams_header));
teamsHeader.showMoreButton(false);
listItems.add(teamsHeader);
listItems.add(new EmptyListElement(getString(R.string.no_teams_found)));
}
// Events
Cursor eventQueryResults = mDb.getMatchesForEventQuery(preparedQuery);
if (eventQueryResults != null && eventQueryResults.moveToFirst()) {
eventQueryResults.moveToPosition(-1);
eventsHeader = new SearchResultsHeaderListElement(getString(R.string.events_header));
if (eventQueryResults.getCount() > MAX_RESULTS_PER_CATEGORY) {
eventsHeader.showMoreButton(true);
eventsHeader.setMoreCount(eventQueryResults.getCount() - MAX_RESULTS_PER_CATEGORY);
} else {
eventsHeader.showMoreButton(false);
}
listItems.add(eventsHeader);
EventRenderer eventRenderer = new EventRenderer(null);
while (eventQueryResults.moveToNext()) {
// Limit ourselves to a certain number of events
if (eventQueryResults.getPosition() >= MAX_RESULTS_PER_CATEGORY) {
break;
}
String key = eventQueryResults.getString(eventQueryResults.getColumnIndex("_id"));
Event event = mDb.getEventsTable().get(key);
if (event == null) {
// Don't display models that don't exist anymore and delete them from search indexes
event = new Event();
event.setKey(key);
mDb.getEventsTable().deleteSearchIndex(event);
continue;
}
listItems.add(eventRenderer.renderFromModel(event, false));
}
eventQueryResults.close();
} else {
eventsHeader = new SearchResultsHeaderListElement(getString(R.string.events_header));
eventsHeader.showMoreButton(false);
listItems.add(eventsHeader);
listItems.add(new EmptyListElement(getString(R.string.no_events_found)));
}
ListViewAdapter adapter = new ListViewAdapter(this, listItems);
resultsList.setAdapter(adapter);
resultsList.setOnItemClickListener((adapterView, view, position, id) -> {
ListViewAdapter adapter1 = (ListViewAdapter) adapterView.getAdapter();
ListItem clickedItem = adapter1.getItem(position);
if (clickedItem instanceof TeamListElement) {
String teamKey = ((ListElement) clickedItem).getKey();
startActivity(ViewTeamActivity.newInstance(SearchResultsActivity.this, teamKey));
} else if (clickedItem instanceof EventListElement) {
String eventKey = ((ListElement) clickedItem).getKey();
startActivity(ViewEventActivity.newInstance(SearchResultsActivity.this, eventKey));
} else if (clickedItem == teamsHeader) {
if (teamsHeader.isShowingMoreButton()) {
startActivity(MoreSearchResultsActivity.newInstance(SearchResultsActivity.this, MoreSearchResultsActivity.TEAM_RESULTS, query));
}
} else if (clickedItem == eventsHeader) {
if (eventsHeader.isShowingMoreButton()) {
startActivity(MoreSearchResultsActivity.newInstance(SearchResultsActivity.this, MoreSearchResultsActivity.EVENT_RESULTS, query));
}
} else {
searchView.setVisibility(View.INVISIBLE);
searchView.setVisibility(View.VISIBLE);
}
});
}
use of com.thebluealliance.androidclient.listitems.ListElement in project the-blue-alliance-android by the-blue-alliance.
the class ContributorClickListener method onItemClick.
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
String login = ((ListElement) ((ListViewAdapter) adapterView.getAdapter()).getItem(position)).getKey();
String url = "https://github.com/" + login;
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
use of com.thebluealliance.androidclient.listitems.ListElement in project the-blue-alliance-android by the-blue-alliance.
the class EventClickListener method onItemClick.
/**
* When called from a ListView, assume {@code mKey} is a team key
*/
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (!(parent.getAdapter() instanceof ListViewAdapter)) {
// safety check. Shouldn't ever be tripped unless someone messed up in code somewhere
TbaLogger.w("Someone done goofed. A ListView adapter doesn't extend ListViewAdapter. Try again...");
return;
}
Object item = ((ListViewAdapter) parent.getAdapter()).getItem(position);
if (item != null && item instanceof ListElement) {
// only open up the view event activity if the user actually clicks on a ListElement
// (as opposed to something inheriting from ListHeader, which shouldn't do anything on user click
Intent intent;
String eventKey = ((ListElement) item).getKey();
if (mKey == null || mKey.isEmpty()) {
// no team is selected, go to the event details
intent = ViewEventActivity.newInstance(context, eventKey);
AnalyticsHelper.sendClickUpdate(context, "event_click", eventKey, "");
} else {
// team is selected, open up the results for that specific team at the event
intent = TeamAtEventActivity.newInstance(context, eventKey, mKey);
AnalyticsHelper.sendClickUpdate(context, "team@event_click", EventTeamHelper.generateKey(eventKey, mKey), "");
}
context.startActivity(intent);
} else {
TbaLogger.d("ListHeader clicked. Ignore...");
}
}
Aggregations