简体   繁体   中英

android listview repeat items when scrolling

I have an android customize listview.

But when my listview scrolling some items repeat!!!!
My custom listview code is :

 static class ViewHolder {
    ImageView imgPlaySound,imgShareList;
    TextView txtCaption,txtDynamicTimer,txtDurationSplit,txtTotalTimer,txtHiden;
    Spinner spTags;
    SeekBar soundSeekBar;
    LinearLayout linearSeek;
    int positions;
}

@Override
public View getView(final int position,View convertView, final ViewGroup parent) {

    vg = parent;
    final ArrayList arrTagNameTemp = new ArrayList();
    final ArrayList arrStartTimeTemp = new ArrayList();
    final ArrayList arrStopTimeTemp = new ArrayList();

    arrTagNameTemp.add("all");
    final ViewHolder viewHolder;
    if (convertView == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        convertView = inflater.inflate(R.layout.listview, null);
        viewHolder = new ViewHolder();
        viewHolder.positions = position;
        viewHolder.txtCaption = (TextView) convertView.findViewById(R.id.txtCaption);
        viewHolder.txtDynamicTimer  = (TextView) convertView.findViewById(R.id.txtDynamicTimer);
        viewHolder.txtDurationSplit = (TextView) convertView.findViewById(R.id.txtTotalTimer);
        viewHolder.imgPlaySound = (ImageView) convertView.findViewById(R.id.imgPlaySound);
        viewHolder.imgShareList = (ImageView) convertView.findViewById(R.id.imgShareList);
        viewHolder.linearSeek = (LinearLayout) convertView.findViewById(R.id.linearSeek);
        viewHolder.soundSeekBar = (SeekBar) convertView.findViewById(R.id.seekBar1);
        viewHolder.spTags = (Spinner) convertView.findViewById(R.id.spTags);
       // viewHolder.imgPlaySound.setOnClickListener(vdClickListener);
        convertView.setTag(viewHolder);
    }
    else
    {
        viewHolder = (ViewHolder) convertView.getTag();
    }
   /////////////////////////////////////////////////////////////////////////
    final MenuItem strListItem = (MenuItem) arrSubject.get(position);
    //viewHolder.txtCaption.setText(arrSubject.get(viewHolder.positions).toString());
    viewHolder.txtCaption.setText(strListItem.getItemId());
    return convertView;
}


I'm very confused for this.
Can anybody help me to resolve this problem?

final ArrayList arrTagNameTemp = new ArrayList();
final ArrayList arrStartTimeTemp = new ArrayList();
final ArrayList arrStopTimeTemp = new ArrayList();    

static class ViewHolder {
     ImageView imgPlaySound,imgShareList;
     TextView txtCaption,txtDynamicTimer,txtDurationSplit,txtTotalTimer,txtHiden;
     Spinner spTags;
     SeekBar soundSeekBar;
     LinearLayout linearSeek;
     int positions;
}

  @Override
  public View getView(final int position,View convertView, final ViewGroup parent) {
ViewHolder viewHolder=new ViewHolder();
if (convertView == null) {
    LayoutInflater inflater = context.getLayoutInflater();
    convertView = inflater.inflate(R.layout.listview, null);
    viewHolder.txtCaption = (TextView) convertView.findViewById(R.id.txtCaption);
    viewHolder.txtDynamicTimer  = (TextView) convertView.findViewById(R.id.txtDynamicTimer);
    viewHolder.txtDurationSplit = (TextView) convertView.findViewById(R.id.txtTotalTimer);
    viewHolder.imgPlaySound = (ImageView) convertView.findViewById(R.id.imgPlaySound);
    viewHolder.imgShareList = (ImageView) convertView.findViewById(R.id.imgShareList);
    viewHolder.linearSeek = (LinearLayout) convertView.findViewById(R.id.linearSeek);
    viewHolder.soundSeekBar = (SeekBar) convertView.findViewById(R.id.seekBar1);
    viewHolder.spTags = (Spinner) convertView.findViewById(R.id.spTags);
   // viewHolder.imgPlaySound.setOnClickListener(vdClickListener);
    convertView.setTag(viewHolder);
}else{
    viewHolder = (ViewHolder) convertView.getTag();
}

final MenuItem strListItem = (MenuItem) arrSubject.get(position);
viewHolder.txtCaption.setText(strListItem.getItemId());
return convertView;
}

Try with demo structure, Just add your layout and Pass context and PoJo class. Here this is only demo

public class MoveinAdapter extends BaseAdapter {

    private ArrayList<MoveinResponse> MoveinResponse;
    private Context cntx;
    private ViewHolder holder;
    private View convertView;

    public MoveinAdapter(Context cntx, ArrayList<MoveinResponse> MoveinResponse) {
        // TODO Auto-generated constructor stub

        this.MoveinResponse = MoveinResponse;
        this.cntx = cntx;
        holder = null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return MoveinResponse.size();
    }

    @Override
    public Object getItem(int position) {
        return MoveinResponse.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) cntx
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.row_movein_screen, parent, false);
            holder = new ViewHolder();
            holder.row_movein_customer = (TextView) convertView
                    .findViewById(R.id.row_movein_customer);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        final MoveinResponse nevi = MoveinResponse.get(position);
        holder.row_movein_customer.setText(nevi.getCustomerName());

        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                 Toast.makeText(cntx,"Here your clicked view",Toast.LENGTH_SHORT).show();
            }
        });
        return convertView;
    } 
    private static class ViewHolder {
        public TextView row_movein_customer;

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM