2016-11-01 3 views
0

При первой загрузке моего списка, он показывает правильные элементы, когда я снова вернусь и снова загружу, он снова отобразит все элементы, повторенные снова. Опять же, когда я возвращаюсь и загружаю то же самое, повторы повторяются.Android ListView item repeat

Для примера: в первый раз у него 4 предмета, во второй раз его 8, в третий раз его 12 и так далее.

ниже мой customarrayadapter'sgetView() метод.

общественного класса CustomArrayAdapterHistory расширяет ArrayAdapter {

ArrayList<RequestHistory> historyList = new ArrayList<>(); 
private Context context; 

public CustomArrayAdapterHistory(Context context, int textViewResourceId, ArrayList<RequestHistory> objects) { 
    super(context, textViewResourceId, objects); 
    historyList = objects; 
    this.context=context; 
} 

@Override 
public int getCount() { 
    return super.getCount(); 
} 

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

    View v = convertView; 
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    v = inflater.inflate(R.layout.request_history_items, null); 
    TextView textView1 = (TextView) v.findViewById(R.id.textView1); 
    TextView textView2 = (TextView) v.findViewById(R.id.textView2); 
    TextView textView3 = (TextView) v.findViewById(R.id.textView3); 
    ImageView imageView= (ImageView) v.findViewById(R.id.imageView); 
    TextView date= (TextView) v.findViewById(R.id.date); 

    Log.e("Date","....."+historyList.get(position).getDate()); 
    date.setText(historyList.get(position).getDate()); 
    if(historyList.get(position).getserviceName()!="null") 
     if(historyList.get(position).getserviceName()!="") 
      textView1.setText(historyList.get(position).getserviceName()); 
    if(historyList.get(position).getreplyNote().equals("")){ 
     textView3.setVisibility(View.INVISIBLE); 
    } 
    else { 
     textView3.setText("Reply: " + historyList.get(position).getreplyNote()); 
    } 
    textView2.setText("Booking Details: " + historyList.get(position).getBookingdetails()); 


    if(historyList.get(position).getStatus().equals("0")){ 
     imageView.setBackgroundResource(R.drawable.pending); 
    } 
    else if(historyList.get(position).getStatus().equals("1")){ 
     Log.e("STATUS ID","....."+historyList.get(position).getStatus()); 
     imageView.setBackgroundResource(R.drawable.cross); 
    } 
    else if(historyList.get(position).getStatus().equals("2")){ 
     imageView.setBackgroundResource(R.drawable.tick); 
    } 
    return v; 

пожалуйста, помогите мне решить эту проблему.

+1

Удалить старый список –

+1

показать логику для установки адаптера для ListView – Vickyexpert

+0

разместим ваш конструктор, я хочу посмотреть, как вы парафировать свой 'historyList'. Я думаю, что проблема в том, что точка –

ответ

0

Ваши GetView элементы метод должен быть, как этот

if(convertView == null){ 
     //We must create a View: 
     convertView = inflater.inflate(R.layout.my_list_item, parent, false); 
    } 
    //Here we can do changes to the convertView, such as set a text on a TextView 
    //or an image on an ImageView. 
    return convertView; 
+1

это только для производительности. это не поможет. его проблема заключается в методе 'getCount()'. и, вероятно, в методе 'getItem()'. –

0

Проверьте третий параметр ArrayList<RequestHistory> objects в конструктор адаптера. Он швы расширяется при каждом вызове конструктора.

0

после смены getCount ниже, это не проблема с вашим адаптером. в действии, использующем адаптер, вы должны очистить и переназначить список, который вы передаете конструктору адаптера, прежде чем вызывать его.

@Override 
public int getCount() { 
    return historyList.size(); 
}