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

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -