Note that there are some explanatory texts on larger screens.

plurals
  1. POnotifyDataSetChange not working from custom adapter
    primarykey
    data
    text
    <p>When I repopulate my <code>ListView</code>, I call a specific method from my <code>Adapter</code>.</p> <p><strong>Problem</strong>:</p> <p>When I call <code>updateReceiptsList</code> from my <code>Adapter</code>, the data is refreshed, but my <code>ListView</code> doesn't reflect the change. </p> <p><strong>Question</strong>:</p> <p>Why doesn't my <code>ListView</code> show the new data when I call <code>notifyDataSetChanged</code>?</p> <p><strong>Adapter</strong>:</p> <pre><code>public class ReceiptListAdapter extends BaseAdapter { public List&lt;Receipt&gt; receiptlist; private Context context; private LayoutInflater inflater; private DateHelpers dateH; public ReceiptListAdapter(Activity activity, Context mcontext, List&lt;Receipt&gt; rl) { context = mcontext; receiptlist = rl; Collections.reverse(receiptlist); inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); dateH = new DateHelpers(); } @Override public int getCount() { try { int size = receiptlist.size(); return size; } catch(NullPointerException ex) { return 0; } } public void updateReceiptsList(List&lt;Receipt&gt; newlist) { receiptlist = newlist; this.notifyDataSetChanged(); } @Override public Receipt getItem(int i) { return receiptlist.get(i); } @Override public long getItemId(int i) { return receiptlist.get(i).getReceiptId() ; } private String getPuntenString(Receipt r) { if(r.getPoints().equals("1")) { return "1 punt"; } return r.getPoints()+" punten"; } @Override public View getView(int position, View convertView, ViewGroup parent) { View vi=convertView; final Receipt receipt = receiptlist.get(position); ReceiptViewHolder receiptviewholder; Typeface tf_hn = Typeface.createFromAsset(context.getAssets(), "helveticaneue.ttf"); Typeface tf_hn_bold = Typeface.createFromAsset(context.getAssets(), "helveticaneuebd.ttf"); if (vi == null) { //convertview==null receiptviewholder = new ReceiptViewHolder(); vi = inflater.inflate(R.layout.view_listitem_receipt, null); vi.setOnClickListener(null); vi.setOnLongClickListener(null); vi.setLongClickable(false); receiptviewholder.shop = (TextView) vi.findViewById(R.id.tv_listitemreceipt_shop); receiptviewholder.date = (TextView) vi.findViewById(R.id.tv_listitemreceipt_date); receiptviewholder.price = (TextView) vi.findViewById(R.id.tv_listitemreceipt_price); receiptviewholder.points = (TextView) vi.findViewById(R.id.tv_listitemreceipt_points); receiptviewholder.shop.setTypeface(tf_hn_bold); receiptviewholder.price.setTypeface(tf_hn_bold); vi.setTag(receiptviewholder); }else{//convertview is not null receiptviewholder = (ReceiptViewHolder)vi.getTag(); } receiptviewholder.shop.setText(receipt.getShop()); receiptviewholder.date.setText(dateH.timestampToDateString(Long.parseLong(receipt.getPurchaseDate()))); receiptviewholder.price.setText("€ "+receipt.getPrice()); receiptviewholder.points.setText(getPuntenString(receipt)); vi.setClickable(false); return vi; } public static class ReceiptViewHolder { public TextView shop; public TextView date; public TextView price; public TextView points; } public Object getFilter() { // XXX Auto-generated method stub return null; } } </code></pre> <p>--EDIT:</p> <p><strong>found Workaround</strong></p> <p>Just to have some functional code i do now:</p> <pre><code>listview.setAdapter( new ReceiptListAdapter(activity,mcontext, -new dataset-); </code></pre> <p>Works, but not how it is supposed to work.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload