0

リストビューがバッククリックで最後のエントリを繰り返す理由??????そのクラスがリストビューで初めて起動されたとき、表示されているすべてのデータは正しいので、リストアイテムの1つをクリックして、説明からもう一度押してから、それを押します最後のエントリを繰り返します。

例えば

ListItems は次のとおりです: A -> B -> C

ここで B をクリックして次のページに移動し、そこから [戻る] をクリックすると、リストは次のようになります。

A -> B -> C -> C

もう一度 A を押して、その A の説明ページから [戻る] をクリックすると、リストは次のようになります。

A -> B -> C -> C -> C

なぜ最後のエントリを繰り返すのですか????

アクティビティ クラス コードは次のとおりです。

         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;  

        }


    }

誰でもそれについて私を助けることができますか??

4

1 に答える 1

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();
}
于 2012-06-04T10:57:41.567 に答える