java - How to change linearlayout background from sqliteopenhelper class using layoutinflater and viewgroup -
i have tried method
this dbcontroller.java
public class dbcontroller extends sqliteopenhelper { public dbcontroller(context applicationcontext) { super(applicationcontext, "user.db", null, 1); } //creates table @override public void oncreate(sqlitedatabase database) { string query; query = "create table users ( userid integer, username text)"; database.execsql(query); } @override public void onupgrade(sqlitedatabase database, int version_old, int current_version) { string query; query = "drop table if exists users"; database.execsql(query); oncreate(database); } /** * inserts user sqlite db * @param queryvalues */ public void insertuser(hashmap<string, string> queryvalues) { sqlitedatabase database = this.getwritabledatabase(); contentvalues values = new contentvalues(); values.put("userid", queryvalues.get("userid")); values.put("username", queryvalues.get("username")); database.insert("users", null, values); database.close(); } /** * list of users sqlite db array list * @return */ public arraylist<hashmap<string, string>> getallusers() { arraylist<hashmap<string, string>> userslist; userslist = new arraylist<hashmap<string, string>>(); string selectquery = "select * users"; sqlitedatabase database = this.getwritabledatabase(); cursor cursor = database.rawquery(selectquery, null); if (cursor.movetofirst()) { { hashmap<string, string> map = new hashmap<string, string>(); string idnya = cursor.getstring(0); if (idnya.equals("36")) { map.put("userid", "my id"); map.put("username", "my username"); context context=null; viewgroup parent=null; layoutinflater inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service); view v = inflater.inflate(r.layout.view_user_entry, parent, true); linearlayout bg = (linearlayout) v.findviewbyid(r.id.wrapper); bg.setbackgroundresource(r.drawable.bubble_yellow); } else { map.put("userid", cursor.getstring(0)); map.put("username", cursor.getstring(1)); } userslist.add(map); } while (cursor.movetonext()); } database.close(); return userslist; } } and mainactivity.java
public class mainactivity extends actionbaractivity { dbcontroller controller = new dbcontroller(this); @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // user records sqlite db arraylist<hashmap<string, string>> userlist = controller.getallusers(); // if users exists in sqlite db if (userlist.size() != 0) { listadapter adapter = new simpleadapter(mainactivity.this, userlist, r.layout.view_user_entry, new string[] { "userid", "username" }, new int[] { r.id.userid, r.id.username }); listview mylist = (listview) findviewbyid(android.r.id.list); mylist.setadapter(adapter); } intent alarmintent = new intent(getapplicationcontext(), samplebc.class); // pending intent object pendingintent pendingintent = pendingintent.getbroadcast(getapplicationcontext(), 0, alarmintent, pendingintent.flag_update_current); alarmmanager alarmmanager = (alarmmanager) getapplicationcontext().getsystemservice(context.alarm_service); // alarm manager calls broadcast every ten seconds (10 * 1000), broadcase further calls service check if new records inserted in alarmmanager.setrepeating(alarmmanager.rtc_wakeup, calendar.getinstance().gettimeinmillis() + 5000, 10 * 1000, pendingintent); } // options menu (actionbar menu) @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); return true; } // when options menu selected @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. int id = item.getitemid(); // when sync action button clicked if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } } this view-user_entry.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/wrapper" android:background="@drawable/bubble_green" > <textview android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="5dp" android:layout_margintop="dp" android:paddingleft="0dip" android:paddingtop="0dip" android:textcolor="@android:color/primary_text_light" android:textsize="14sp" /> <textview android:id="@+id/userid" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> here error
context context=null; viewgroup parent=null; layoutinflater inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service); view v = inflater.inflate(r.layout.view_user_entry, parent, true); linearlayout bg = (linearlayout) v.findviewbyid(r.id.wrapper); bg.setbackgroundresource(r.drawable.bubble_yellow); when running application, says force closed. don't know should do, because method have tried, still force closed.
thank much.
first step save name "layaout_first" in sqlite, need method, , last , important : getresources().getidentifier(id, "layaout_first", ctx.getpackagename());, , change background programatically
Comments
Post a Comment