android - Listview BaseAdapter Data not being shown -
i'm trying populate listview using baseadapter, problem i'm having textview shows data, refuses draw text. i've called gettext() on textview, , show correct information, reason, not being rendered.
customadapter:
public class cardlistviewadapter extends baseadapter { private context context; private arraylist<string> numbers; private layoutinflater layoutinflater; public cardlistviewadapter(context context, arraylist<string> numbers) { this.context = context; this.numbers = numbers; layoutinflater = (layoutinflater)context.getsystemservice(context.layout_inflater_service); } @override public int getcount() { return numbers.size(); } @override public object getitem(int position) { return numbers.get(position); } @override public long getitemid(int position) { return 0; } @override public view getview(int position, view convertview, viewgroup parent) { viewholder holder = new viewholder(); if(convertview == null) { log.i("inflating","inflating layout..."); convertview = layoutinflater.inflate(r.layout.conversation,null); } holder.numbers = (textview)convertview.findviewbyid(r.id.numbertitle); log.e("number",holder.numbers.tostring()); convertview.settag(holder); log.i("item:", "" + numbers.get(position)); holder.numbers.settext(numbers.get(position)); return convertview; } public final class viewholder { public textview numbers; } }
mainactivity:
public class conversationthreads extends appcompatactivity { private listview listview; cardlistviewadapter adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_conversation_threads); this.listview = (listview)findviewbyid(r.id.conversationlistview); populateconversations(); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_conversation_threads, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } private void populateconversations() { log.d("populate", "populating..."); //array of strings returned -- target data arraylist<string> numbers = tsms.getconversationnumbers(getapplicationcontext()); adapter = new cardlistviewadapter(getapplicationcontext(),numbers); listview.setadapter(adapter); }
}
listview.xml layout:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:layout_gravity="center_horizontal" android:paddingbottom="@dimen/activity_vertical_margin" tools:context=".cthreads" android:id="@+id/conversationthreadlayout"> <listview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/conversationlistview" /> </relativelayout>
conversation.xml layout:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_card"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancelarge" android:text="large text" android:id="@+id/numbertitle" android:layout_alignparenttop="true" android:layout_alignparentstart="true" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancemedium" android:text="medium text" android:id="@+id/lastmessage" android:layout_below="@+id/numbertitle" android:layout_centerhorizontal="true" /> </relativelayout>
edit: fixed listview id error, result unchanged.
edit2: problem white background listview, , white text.
answer credit @n1to, provided in comments.
you have in code:
this.listview = (listview)findviewbyid(r.id.listview);
where in xml id different:
<listview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/conversationlistview" />
also, move activity_conversation_threads.xml
, doesn't need separate layout.
add class `conversationthreads:
private arraylist<string> numbers; private cardlistviewadapter adapter;
and change method to:
private void populateconversations() { log.d("populate", "populating..."); //array of strings returned -- target data numbers = tsms.getconversationnumbers(getapplicationcontext()); log.d("arraylist size", string.valueof(numbers.size()); // check if returns non 0 adapter = new cardlistviewadapter(getapplicationcontext(),numbers); listview.setadapter(adapter); }
code adapter
public class cardlistviewadapter extends baseadapter { private context context; private arraylist<string> numbers; public cardlistviewadapter(context context, arraylist<string> numbers) { this.context = context; this.numbers = numbers; } @override public int getcount() { return numbers.size(); } @override public object getitem(int position) { return numbers.get(position); } @override public long getitemid(int position) { return 0; } @override public view getview(int position, view convertview, viewgroup parent) { view rowview = convertview; if (rowview == null) { layoutinflater layoutinflater = layoutinflater.from(context); rowview = layoutinflater.inflate(r.layout.conversation, null); viewholder viewholder = new viewholder(rowview); rowview.settag(viewholder); } final viewholder holder = (viewholder) rowview.gettag(); holder.numbers.settext(numbers.get(position)); return rowview; } public class viewholder { private final textview numbers; public viewholder(view v) { this.numbers = (textview) v.findviewbyid(r.id.numbertitle); } } }
Comments
Post a Comment