Android sqlite database data displaying abnormally -


i relatively new android programming , having few issues how database data fetched. trying create simple messaging application. data in database saving expected when comes displaying issue is. message activity displays messages while view message activity displays activity thread. issue data displayed messages activity ordered in descending mode id of each message loads ascending , thereby messages not actual conversation thread. know why messages id loaded in ascending manner. code below:

messages activity

package com.package.name;  import android.annotation.targetapi; import android.content.context; import android.content.intent; import android.os.build; import android.os.bundle; import android.support.v7.app.actionbaractivity; import android.support.v7.widget.toolbar; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.imagebutton; import android.widget.listview; import android.widget.popupmenu;  import java.util.arraylist;   public class messageactivity extends actionbaractivity { private listview obj; dbhelper mydb;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_message);      mydb = new dbhelper(this);     arraylist array_list = mydb.getallmessages();     arrayadapter arrayadapter=new arrayadapter(this,android.r.layout.simple_list_item_1, array_list);      obj = (listview)findviewbyid(r.id.list);     obj.setadapter(arrayadapter);     obj.setonitemclicklistener(new adapterview.onitemclicklistener() {         @override         public void onitemclick(adapterview<?> arg0, view arg1, int arg2, long arg3) {             // todo auto-generated method stub             int id_to_search = arg2 + 1;              bundle databundle = new bundle();             databundle.putint("id", id_to_search);              intent intent = new intent(getapplicationcontext(), viewmessage.class);              intent.putextras(databundle);             startactivity(intent);         }     }); } 

view messages activity

package com.package.name;  import android.content.context; import android.os.bundle; import android.support.v7.app.actionbaractivity; import android.support.v7.widget.toolbar; import android.view.menu; import android.view.menuitem; import android.widget.arrayadapter; import android.widget.listview;  import java.util.arraylist;   public class viewmessage extends actionbaractivity {  private listview obj; dbhelper mydb;  private int msgid;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_view_message);     bundle extras = getintent().getextras();     integer msgid = extras.getint("id");      mydb = new dbhelper(this);     arraylist array_list = mydb.getallconversations(msgid);     arrayadapter arrayadapter=new arrayadapter(this,android.r.layout.simple_list_item_1, array_list);      obj = (listview)findviewbyid(r.id.list);     obj.setadapter(arrayadapter); } } 

dbhelper

public class dbhelper extends sqliteopenhelper {  public static final string database_name = "sddemodb.db"; public static final string contacts_table_name = "contacts"; public static final string contacts_column_id = "id"; public static final string contacts_column_name = "name"; public static final string contacts_column_email = "email"; public static final string contacts_column_street = "street"; public static final string contacts_column_city = "place"; public static final string contacts_column_phone = "phone";  //message details table public static final string messages_table_name = "messages"; public static final string messages_column_id = "id"; public static final string messages_user_id = "user_id"; public static final string messages_column_subject = "subject"; public static final string messages_column_category = "category"; public static final string messages_status = "status"; public static final string messages_created_at = "created_at";  //conversation details table public static final string conversation_table_name = "conversation"; public static final string conversation_column_id = "id"; public static final string conversation_column_message_id = "message_id"; public static final string conversation_column_type = "type"; public static final string conversation_column_message = "message"; public static final string conversation_status = "status"; public static final string conversation_created_at = "created_at"; private hashmap hp;  public dbhelper(context context) {     super(context, database_name , null, 1); }  @override public void oncreate(sqlitedatabase db) {     // todo auto-generated method stub     db.execsql(             "create table " + messages_table_name + "("                     + messages_column_id + " integer primary key autoincrement, "                     + messages_user_id + " integer, "                     + messages_column_subject + " text, "                     + messages_column_category + " text, "                     + messages_status + " text, "                     + messages_created_at + " text)"     );     db.execsql(             "create table " + conversation_table_name + "("                     + conversation_column_id + " integer primary key autoincrement, "                     + conversation_column_message_id + " integer, "                     + conversation_column_message + " text, "                     + conversation_column_type + " text, "                     + conversation_status + " text, "                     + conversation_created_at + " text)"     );     db.execsql(             "create table contacts " +                     "(" + contacts_column_id + " integer primary key autoincrement, name text,phone text,email text, street text,place text)"     ); }  @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {     // todo auto-generated method stub     db.execsql("drop table if exists " + messages_table_name);     db.execsql("drop table if exists " + conversation_table_name);     db.execsql("drop table if exists contacts");     oncreate(db); }  public boolean createmessage  (string user_id, string subject, string category, string status, string time, string msg) {      sqlitedatabase db = this.getwritabledatabase();     contentvalues contentvalues = new contentvalues();     contentvalues.put(messages_user_id, user_id);     contentvalues.put(messages_column_subject, subject);     contentvalues.put(messages_column_category, category);     contentvalues.put(messages_status, status);     contentvalues.put(messages_created_at, time);     long lastid = db.insert(messages_table_name, null, contentvalues);     createconv(lastid, msg, "q", "1", time);     return true; }  public boolean createconv  (long msg_id,string msg, string type, string status, string time) {     sqlitedatabase db = this.getwritabledatabase();     contentvalues contentvalues = new contentvalues();     contentvalues.put(conversation_column_message_id, msg_id);     contentvalues.put(conversation_column_message, msg);     contentvalues.put(conversation_column_type, type);     contentvalues.put(conversation_status, status);     contentvalues.put(conversation_created_at, time);     db.insert(conversation_table_name, null, contentvalues);     return true; }  public boolean insertcontact  (string name, string phone, string email, string street,string place) {     sqlitedatabase db = this.getwritabledatabase();     contentvalues contentvalues = new contentvalues();     contentvalues.put("name", name);     contentvalues.put("phone", phone);     contentvalues.put("email", email);     contentvalues.put("street", street);     contentvalues.put("place", place);     db.insert("contacts", null, contentvalues);     return true; }  public int numberofrows(){     sqlitedatabase db = this.getreadabledatabase();     int numrows = (int) databaseutils.querynumentries(db, contacts_table_name);     return numrows; }  public boolean updatemessage (integer id, string user_id, string subject, string category, string status, string time, string msg) {     sqlitedatabase db = this.getwritabledatabase();     contentvalues contentvalues = new contentvalues();     contentvalues.put(messages_user_id, user_id);     contentvalues.put(messages_column_subject, subject);     contentvalues.put(messages_column_category, category);     contentvalues.put(messages_status, status);     contentvalues.put(messages_created_at, time);     db.update(messages_table_name, contentvalues, messages_column_id +" = ? ", new string[] { integer.tostring(id) } );     return true; }  public boolean updatecontact (integer id, string name, string phone, string email, string street,string place) {     sqlitedatabase db = this.getwritabledatabase();     contentvalues contentvalues = new contentvalues();     contentvalues.put("name", name);     contentvalues.put("phone", phone);     contentvalues.put("email", email);     contentvalues.put("street", street);     contentvalues.put("place", place);     db.update("contacts", contentvalues, "id = ? ", new string[] { integer.tostring(id) } );     return true; }  public integer deletecontact (integer id) {     sqlitedatabase db = this.getwritabledatabase();     return db.delete("contacts",             "id = ? ",             new string[] { integer.tostring(id) }); }  public arraylist<string> getallmessages() {     arraylist<string> array_list = new arraylist<string>();      //hp = new hashmap();     sqlitedatabase db = this.getreadabledatabase();     cursor res =  db.rawquery( "select * " + messages_table_name + " order " + messages_column_id + " desc", null);     res.movetofirst();      while(res.isafterlast() == false){         array_list.add(res.getstring(res.getcolumnindex(messages_column_subject)));         res.movetonext();     }     return array_list; }  public arraylist<string> getallconversations(integer msgid) {     arraylist<string> array_list = new arraylist<string>();      //hp = new hashmap();     sqlitedatabase db = this.getreadabledatabase();     cursor res =  db.rawquery( "select * " + conversation_table_name + " " + conversation_column_message_id  + " = " + msgid + " order " + conversation_column_id + " asc", null);     res.movetofirst();      while(res.isafterlast() == false){         array_list.add(res.getstring(res.getcolumnindex(conversation_column_message)));         res.movetonext();     }     return array_list; }  public arraylist<string> getallcotacts() {     arraylist<string> array_list = new arraylist<string>();      //hp = new hashmap();     sqlitedatabase db = this.getreadabledatabase();     cursor res =  db.rawquery( "select * " + contacts_table_name + " order " + contacts_column_id + " desc", null);     res.movetofirst();      while(res.isafterlast() == false){         array_list.add(res.getstring(res.getcolumnindex(contacts_column_name)));         res.movetonext();     }     return array_list; } } 

try change

int id_to_search = arg2 + 1; 

into:

int id_to_search = arg0.getcount() - arg2; 

Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -