Android ListView重复项

Android ListView重复项,android,listview,android-listview,Android,Listview,Android Listview,我有一个片段(电影),里面有一个列表视图,当我通过祖先导航转到另一个片段(电影细节)并返回(电影)时,列表视图复制项目(电影),我使用截图填充列表视图。我不知道我做错了什么。。这是我的密码: 截击适配器: public class VolleyAdapter extends BaseAdapter { public VolleyAdapter(Activity activity, ArrayList<Movie> movies) { this.activity =

我有一个片段(电影),里面有一个列表视图,当我通过祖先导航转到另一个片段(电影细节)并返回(电影)时,列表视图复制项目(电影),我使用截图填充列表视图。我不知道我做错了什么。。这是我的密码:

截击适配器:

public class VolleyAdapter extends BaseAdapter {

public VolleyAdapter(Activity activity, ArrayList<Movie> movies) {
        this.activity = activity;
        this.movies = movies;
}

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

    ViewHolder viewHolder;

    if (convertView == null) {
        convertView = activity.getLayoutInflater().inflate(
                R.layout.list_item, parent, false);

        viewHolder = new ViewHolder();
        viewHolder.nameTextView = (TextView) convertView
                .findViewById(R.id.item_lista_barraca_nomeTextView);

        convertView.setTag(viewHolder);

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

    Movie movie = getItem(position);
    viewHolder.nameTextView.setText(movie.getName());

    return convertView;
}

static class ViewHolder {
    TextView nameTextView;
}
}
公共类截击适配器扩展BaseAdapter{
公共截击适配器(活动、ArrayList电影){
这个。活动=活动;
这部电影=电影;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
持票人持票人;
if(convertView==null){
convertView=activity.GetLayoutFlater().充气(
R.layout.list_项,父项,false);
viewHolder=新的viewHolder();
viewHolder.nameTextView=(TextView)convertView
.findViewById(R.id.item\u lista\u barraca\u nomeTextView);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
Movie Movie=getItem(位置);
viewHolder.nameTextView.setText(movie.getName());
返回视图;
}
静态类视窗夹{
TextView名称TextView;
}
}
电影片段:

public class MoviesFragment extends ListFragment {
private VolleyAdapter mAdapter;
private ArrayList<Movie> mMovies;

    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      mMovies = MovieDAO.get(getActivity()).getMovies();
      mAdapter = new VolleyAdapter(getActivity(), mMovies);
      setListAdapter(mAdapter);

      JsonArrayRequest req = new JsonArrayRequest(URL, 
            new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response {
              // create movie..
              mMovies.add(movie);
              mAdapter.notifyDataSetChanged();
            },new Response.ErrorListener() {
              ...
      });
      AppController.getInstance().addToRequestQueue(req);

    }
公共类MoviesFragment扩展了ListFragment{
私人截击机;
私人ArrayList mMovies;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mMovies=MovieDAO.get(getActivity()).getMovies();
mAdapter=新的截击适配器(getActivity(),mMovies);
setListAdapter(mAdapter);
JsonArrayRequest req=新的JsonArrayRequest(URL,
新的Response.Listener(){
@凌驾
公共无效onResponse(JSONArray响应{
//制作电影。。
mMovies.add(电影);
mAdapter.notifyDataSetChanged();
},new Response.ErrorListener(){
...
});
AppController.getInstance().addToRequestQueue(req);
}

MovieDAO.get(getActivity()).getMovies()做什么?如果你再次转到另一个片段并返回,它会被填充3次,还是只填充2次?(所以Movies->Details->Movies(2*items)->Details->Movies放映2次,还是元素的3次?)MovieDAO.get(getActivity()).getMovies()只需返回一个电影的ArrayList,在这种情况下为空,但在截击请求后,我在其Shows中插入了一些项目3次、4次……等等。。