I have table logs in db with columns PLACE, GRADE, PLATE NUMBER,LENGTH.. So What i want and what I made so far is that on DisplayLogsByPlace activity i have displayed list of logs grouped by place (so for example if I have places like this: London, Pariz, Berlin, Pariz, Berlin, Berlin) it displays me only one time place name (London, Pariz, Berlin) so this is good and working.
I put OnItemClickListener on list which should go to activity DisplayLogs and show me for example if I click on Pariz(in DisplaylogsByGroup activity) on DisplayLogs activity it should display me two logs(because of two times added place Pariz) with log id, grade, length?
This is my DisplayLogsByPlace activity
mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(DisplayLogsByPlace.this, LogsList.class);
startActivity(intent);
}
});
}
private class LogsByPlaceAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<Logs> logsList;
public LogsByPlaceAdapter(List<Logs> logsList) {
inflater = LayoutInflater.from(DisplayLogsByPlace.this);
this.logsList = logsList;
}
@Override
public int getCount() {
return logsList.size();
}
@Override
public Object getItem(int position) {
return logsList.get(position);
}
@Override
public long getItemId(int position) {
return logsList.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.activity_display_logs_by_place, parent, false);
}
Logs log = logsList.get(position);
((TextView) convertView.findViewById(R.id.textShowDate)).setText(log.getCreatedAt().toString());
((TextView) convertView.findViewById(R.id.textShowPlace)).setText(log.getPlace());
return convertView;
}
this is my DisplayLogs activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_listview);
mainListView = (ListView) findViewById(R.id.ListViewItem);
dbHandler = new LogsDBHandler(this);
ArrayList<Logs> logsList = dbHandler.getAllLogsWithSamePlace();
listAdapter = new LogsSamePlaceArrayAdapter(logsList);
mainListView.setAdapter(listAdapter);
}
private class LogsSamePlaceArrayAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<Logs> logsList;
public LogsSamePlaceArrayAdapter(List<Logs> logsList) {
inflater = LayoutInflater.from(LogsList.this);
this.logsList = logsList;
}
@Override
public int getCount() {
return logsList.size();
}
@Override
public Object getItem(int position) {
return logsList.get(position);
}
@Override
public long getItemId(int position) {
return logsList.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.activity_logs_list, parent, false);
}
Logs log = logsList.get(position);
((TextView) convertView.findViewById(R.id.textPlate)).setText(log.getPlace());
((TextView) convertView.findViewById(R.id.textSort)).setText(log.getPlace());
((TextView) convertView.findViewById(R.id.textGrade)).setText(log.getPlace());
((TextView) convertView.findViewById(R.id.textDiameter)).setText(log.getDiameter());
((TextView) convertView.findViewById(R.id.textLength)).setText(log.getLength());
return convertView;
}
}
This is how I grouped places
public ArrayList<Logs> getAllLogsGroupedByPlace() {
ArrayList<Logs> logByPlaceList = new ArrayList<Logs>();
String selectQuery = "SELECT * FROM " + TABLE_LOGS + " GROUP BY " + KEY_PLACE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Logs log = new Logs();
log.setId(cursor.getLong(0));
log.setCreatedAt(cursor.getString(1));
log.setPlace(cursor.getString(2));
logByPlaceList.add(log);
}while (cursor.moveToNext());
}
return logByPlaceList;
}
And this is how i tried to get all logs from the same group by place, and that doesn't work for me
public ArrayList<Logs> getAllLogsWithSamePlace() {
ArrayList<Logs> logPlaceList = new ArrayList<Logs>();
String selectQuery = "SELECT * FROM " + TABLE_LOGS + " GROUP BY " + KEY_PLACE + " WHERE " + KEY_PLACE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Logs log = new Logs();
log.setId(cursor.getLong(0));
log.setPlate_number(cursor.getString(1));
log.setSort_id(cursor.getString(2));
log.setGrade(cursor.getString(3));
log.setDiameter(cursor.getString(4));
log.setLength(cursor.getString(5));
}while (cursor.moveToNext());
}
return logPlaceList;
}
So I need help to get all logs from the same place. I click on list where are three places Berlin, Pariz, London.. so i click on London and in next activity it should show me all logs with place London. I thing I messed up with dbHandler method, but any help is good!
Aucun commentaire:
Enregistrer un commentaire