2017-01-13 37 views
0

下面的代碼重複最後一個元素4次。此ListView用於選項卡式活動片段中。我在網上搜索,但沒有發現任何有用的信息。請幫忙!我的自定義列表視圖適配器重複上一個項目

我的適配器類:

public class MyAdapter extends ArrayAdapter<ElementList> { 
public MyAdapter(Context context, ArrayList<ElementList> EventList){ 
    super(context,0,EventList); 
} 

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


    ViewHolder holder; 

    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_adapter, parent, false); 

     holder = new ViewHolder(); 
     holder.id = (TextView) convertView.findViewById(R.id.textView9); 
     holder.name = (TextView) convertView.findViewById(R.id.textView6); 
     holder.date =(TextView)convertView.findViewById(R.id.textView7); 
     holder.time =(TextView)convertView.findViewById(R.id.textView8); 

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

    ElementList elementList = getItem(position); 

    if(elementList != null) { 

     holder.id.setText(ElementList.id); 
     holder.name.setText(ElementList.name); 
     holder.date.setText(ElementList.date); 
     holder.time.setText(ElementList.time); 
    } 

    return convertView; 
} 

是ListView控件的使用方法:

ArrayList<ElementList> EventList = new ArrayList<ElementList>(); 
EventList.add(new ElementList("1","bla1","12/34/45","12:40")); 
        EventList.add(new ElementList("1","bla2","12/34/45","12:40")); 
        EventList.add(new ElementList("1","bla3","12/34/45","12:40")); 
        EventList.add(new ElementList("1","bla4","12/34/45","12:40")); 

       MyAdapter adapter = new MyAdapter(getActivity(),EventList); 
       ListView myList = (ListView) rootView.findViewById(R.id.listView); 
       myList.setAdapter(adapter); 

有什麼建議? 。

+0

問題的說明 –

+0

將適配器設置在列表上後,可以調用適配器上的notifyDataSetChanged()嗎? – DNax

回答

0

我覺得這

if(elementList != null) { 

    holder.id.setText(ElementList.id); 
    holder.name.setText(ElementList.name); 
    holder.date.setText(ElementList.date); 
    holder.time.setText(ElementList.time); 
    } 

應該是這個

if(elementList != null) { 

    holder.id.setText(elementList.id); 
    holder.name.setText(elementList.name); 
    holder.date.setText(elementList.date); 
    holder.time.setText(elementList.time); 
} 

我不知道這是否會有所幫助,但是。您可以添加一些日誌語句來查看arrayList中實際存在的內容,以及適配器是否準備好從中讀取數據。

+0

感謝您的回答,但它沒有幫助。 – user3675515

相關問題