Note that there are some explanatory texts on larger screens.

plurals
  1. POCustom ListView with Scrolling
    text
    copied!<p>I am facing a problem in custom listview where i am having 10 rows of values displayed inside the textview from db. When i scroll the list the items are duplicated. Consider that i have number of rows named from 1 to 10. if i scroll it, the rows are duplicated as 1,2,3,4,5,1,6,7,8,9,2,3,etc.. the same values are again displayed. I don't know why this occurs. If i remove 5 items and disable scrolling, then it does not have any sort of issues. Adding more number of rows with scrolling enabled arises this issue.</p> <pre><code> private class ItemLayoutListViewAdapter extends BaseAdapter { Context context; Hold myHold; String[] TableNo, MachineId, ItemName, Quantity, Progress, Timer; private ItemLayoutListViewAdapter(Context context, String[] aTableNo, String[] aMachineId, String[] aItemName, String[] aQuantity, String[] aProgress, String[] aTimer) { this.TableNo = aTableNo; this.MachineId = aMachineId; this.ItemName = aItemName; this.Quantity = aQuantity; this.Progress = aProgress; this.Timer = aTimer; this.context = context; } private class Hold { TextView[] tvItemLayoutListItems = new TextView[6]; ImageButton ibItemCustomization, ibCorrect, ibWrong; ImageButton[] ibUpDownArrow = new ImageButton[2]; Button bnProgress; Chronometer chTimer; } @Override public int getCount() { return TableNo.length; } @Override public Object getItem(int arg0) { return arg0; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(final int arg0, View arg1, ViewGroup arg2) { if (arg1 == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); arg1=inflater.inflate(R.layout.kitchen_item_list_view_layout,null); myHold = new Hold(); int[] tvItemLayoutListItemsIds = { R.id.tvTableNo, R.id.tvMachineId, R.id.tvItemName, R.id.tvQuantity,R.id.tvTimer, R.id.tvDummyItemName }; int[] ibUpDownArrowIds = { R.id.ibArrowUp, R.id.ibArrowDown }; for(int itvItemLayoutListItemsIdsCtr = 0; itvItemLayoutListItemsIdsCtr &lt; tvItemLayoutListItemsIds.length;itvItemLayoutListItemsIdsCtr++) { myHold.tvItemLayoutListItems[itvItemLayoutListItemsIdsCtr] = (TextView) arg1 .findViewById(tvItemLayoutListItemsIds[itvItemLayoutListItemsIdsCtr]); } myHold.chTimer = (Chronometer) arg1.findViewById(R.id.chTimer); myHold.bnProgress = (Button) arg1.findViewById(R.id.bnProgress); myHold.tvItemLayoutListItems[0].setText(TableNo[arg0]); myHold.tvItemLayoutListItems[1].setText(MachineId[arg0]); myHold.tvItemLayoutListItems[2].setText(ItemName[arg0]); myHold.tvItemLayoutListItems[3].setText(Quantity[arg0]); myHold.tvItemLayoutListItems[4].setText(Timer[arg0]); myHold.ibCorrect = (ImageButton) arg1 .findViewById(R.id.ibCorrect); myHold.ibCorrect.setTag(myHold); myHold.ibCorrect.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Hold Itemholder; Itemholder = (Hold) arg0.getTag(); if (Itemholder.tvItemLayoutListItems[5].getText() .equals("Orange")) { Itemholder.tvItemLayoutListItems[2] .setBackground(context.getResources() .getDrawable( R.drawable.textview_green)); } else { Itemholder.tvItemLayoutListItems[2] .setBackground(context.getResources() .getDrawable( R.drawable.textview_orange)); ; Itemholder.tvItemLayoutListItems[5] .setText("Orange"); } } }); myHold.ibWrong = (ImageButton) arg1.findViewById(R.id.ibWrong); myHold.ibWrong.setTag(myHold); myHold.ibWrong.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Hold Itemholder; Itemholder = (Hold) arg0.getTag(); Itemholder.tvItemLayoutListItems[2] .setBackground(context .getResources() .getDrawable(R.drawable.textview_border)); } }); myHold.ibItemCustomization = (ImageButton) arg1 .findViewById(R.id.ibItemCustomization); myHold.ibItemCustomization .setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { new item_customization(context).CustomizeItem(); } }); for (int iibUpDownArrowIdsCtr = 0; iibUpDownArrowIdsCtr &lt; ibUpDownArrowIds.length; iibUpDownArrowIdsCtr++) { myHold.ibUpDownArrow[iibUpDownArrowIdsCtr] = (ImageButton) arg1 .findViewById(ibUpDownArrowIds[iibUpDownArrowIdsCtr]); myHold.ibUpDownArrow[iibUpDownArrowIdsCtr].setTag(myHold); } myHold.ibUpDownArrow[0] .setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { IncDecTimer(arg0,true); } }); myHold.ibUpDownArrow[1] .setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { IncDecTimer(arg0,false); } }); myHold.chTimer.setTag(myHold); myHold.tvItemLayoutListItems[4].setTag(myHold); myHold.chTimer.setBase(1000); myHold.chTimer.start(); myHold.chTimer .setOnChronometerTickListener(new OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer arg0) { final Hold Timerholder; Timerholder = (Hold) arg0.getTag(); String[] sTimer = Timerholder.tvItemLayoutListItems[4] .getText().toString().split(":"); int iMin, iSec, iSecValue; iMin = Integer.parseInt(sTimer[0]); iSec = Integer.parseInt(sTimer[1]); if (iSec == 0) { iMin = iMin - 1; if (iMin == -1) { Timerholder.tvItemLayoutListItems[4] .setText("00:00"); Timerholder.chTimer.stop(); } iSecValue = 60; } else { iSecValue = iSec; } iSecValue = iSecValue - 1; String sMin, sSec; if (iMin &lt; 10) { sMin = "0"; } else { sMin = ""; } if (iSecValue &lt; 10) { sSec = "0"; } else { sSec = ""; } if (iMin &gt; -1) { Timerholder.tvItemLayoutListItems[4].setText(sMin .concat(String.valueOf(iMin)) .concat(":").concat(sSec) .concat(String.valueOf(iSecValue))); } } }); arg1.setTag(myHold); } else { arg1.getTag(); } return arg1; } </code></pre> <p>Please do help me. If you need the code is please let me know. I have kept the basic custom listview with text view inside it. </p>
 

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