package org.ecomap.android.app.tabs;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import org.ecomap.android.app.Problem;
import org.ecomap.android.app.R;
import org.ecomap.android.app.activities.MainActivity;
import org.ecomap.android.app.data.EcoMapContract;
import org.ecomap.android.app.fragments.EcoMapFragment;
import org.ecomap.android.app.utils.top10Adapter;
import java.util.ArrayList;
public class Top10Tab extends Fragment {
private Activity mActivity;
public static Top10Tab newInstance(int tabId) {
Top10Tab f = new Top10Tab();
Bundle bdl = new Bundle(tabId);
bdl.putInt("tabID", tabId);
f.setArguments(bdl);
//Log.d(Top10Tab.class.getSimpleName(), "newInstance: " + tabId);
return f;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.top10_tab, container, false);
int tabId = getArguments().getInt("tabID");
//Log.d(Top10Tab.class.getSimpleName(), "onCreateView: " + tabId);
String sortOrder = "";
switch (tabId) {
case 0:
sortOrder = "( " + EcoMapContract.ProblemsEntry.COLUMN_NUMBER_OF_VOTES + ") DESC LIMIT 10";
break;
case 1:
sortOrder = "( " + EcoMapContract.ProblemsEntry.COLUMN_SEVERITY + ") DESC LIMIT 10";
break;
case 2:
sortOrder = "( " + EcoMapContract.ProblemsEntry.COLUMN_COMMENTS_NUMBER + ") DESC LIMIT 10";
break;
}
ArrayList<Problem> top10Problems = new ArrayList<>(10);
//get data
Cursor cursor = mActivity.getContentResolver()
.query(EcoMapContract.ProblemsEntry.CONTENT_URI, null, null, null, sortOrder);
if (cursor != null) {
while (cursor.moveToNext()) {
top10Problems.add(new Problem(cursor, getActivity()));
}
cursor.close();
}
ListView lvTopPop = (ListView) v.findViewById(R.id.lvPop);
final top10Adapter adapter = new top10Adapter(getActivity(), top10Problems, tabId);
lvTopPop.setAdapter(adapter);
lvTopPop.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
//to open the problem on a map, set lastOpenProblem and open SlidingPanel
EcoMapFragment.lastOpenProblem = (Problem) adapter.getItem(position);
EcoMapFragment.isOpenSlidingLayer = true;
//to open the map, we use empty filter
((MainActivity) mActivity).filter("");
}
});
return v;
}
}