2012-06-04 40 views
0

爲什麼Listview重複最後一個條目後點擊??????第一次當這個類與ListView啓動時,它顯示的所有數據是正確的,現在我點擊列表中的一個Item並再次從描述中按下,然後重複最後一個輸入。ListView最後一個條目重複點擊

例如

時listItems是: 甲 - >乙 - 「ç

現在我點擊B和進入下一個頁面,並從我點擊後退,然後在列表是:

A - >乙 - >ç - >ç

,再次當我按下A,從該說明頁面,當我點擊後退,然後在列表是:

甲 - >乙 - 「ç - 」ç - > C

爲什麼它重複最後一項?

Activity類代碼如下:

  if(list.isEmpty()) 
          { 
           if(adapter==null) 
           { 
             adapter=new MyAdapter(context, list); 
             ls.setAdapter(adapter); 
           } 
           adapter.notifyDataSetChanged(); 
          } 

    @Override 
protected void onStop() { 
    super.onStop(); 
    AppointmentListView.setVisibility(View.GONE); 
} 

@Override 
protected void onRestart() { 
    super.onRestart(); 
    AppointmentListView.setVisibility(View.VISIBLE); 
} 

和MyAdapter類:

public class MyAdapter extends BaseAdapter{ 

     public ArrayList<HashMap<String,String>> list; 
     Context context; 
     private LayoutInflater mInflater; 
     String appointType; 


     public MyAdapter(Context context, ArrayList<HashMap<String,String>> list) 
     { 
      super(); 
       this.context=context; 
      this.list = list; 
      mInflater = LayoutInflater.from(context); 

     } 

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

     } 



     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return list.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     static class ViewHolder { 
      TextView AppTime_List; 
      TextView CustomerName_List; 
      TextView CustomerAddress_List; 
      TextView AppID_List; 
      Button MapButton; 
      } 


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

      ViewHolder holder; 

      if (convertView == null) 
      { 
       holder = new ViewHolder(); 
      convertView = mInflater.inflate(R.layout.listviewsample, parent, false); 

      holder.AppTime_List = (TextView) convertView.findViewById(R.id.time); 
      holder.CustomerName_List = (TextView) convertView.findViewById(R.id.name); 
      holder.CustomerAddress_List = (TextView) convertView.findViewById(R.id.Address); 
       convertView.setTag(holder); 

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

      } 

      appointType=(String)list.get(position).get("Name"); 

      holder.AppID_List.setText((String)list.get(position).get("ID")); 
      holder.AppTime_List.setText((String)list.get(position).get("Time")); 
      holder.CustomerName_List.setText((String)list.get(position).get("Name")); 
      holder.CustomerAddress_List.setText((String)list.get(position).get("Address")); 



      return convertView; 

     } 


    } 

可有人請幫我這句話?

+0

可以提供活動代碼以及........ –

+0

請檢查我的更新問題 – Kanika

+0

你能提供你的代碼的一部分你在哪裏用元素填充你的列表? –

回答

0

這裏的問題是用MyAdapter的getCount方法。現在我MyAdapter課,我都不得不宣佈list_size:

int list_size; 

    public MyAdapter(Context context, ArrayList<HashMap<String,String>> list) 
{ 
    super(); 
     this.context=context; 
    this.list = list; 
    mInflater = LayoutInflater.from(context); 
    list_size=list.size(); 

} 

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