Android 每次刷新listview时,刷新listview都会复制行
解决这个问题的可能办法是什么。 我在我的应用程序中向下滑动以刷新Android 每次刷新listview时,刷新listview都会复制行,android,android-listview,Android,Android Listview,解决这个问题的可能办法是什么。 我在我的应用程序中向下滑动以刷新listview。但当我尝试刷新它时,它会创建重复的行。 我希望以前更新的行保留在视图中,当我滑动以更新时,它应该在视图顶部附加更新的行(这很正常)。 唯一的问题是行的重复。 这是我的密码 public class MainActivity extends ActionBarActivity implements SwipeRefreshLayout.OnRefreshListener { private String TAG =
listview
。但当我尝试刷新它时,它会创建重复的行。
我希望以前更新的行保留在视图中,当我滑动以更新时,它应该在视图顶部附加更新的行(这很正常)。
唯一的问题是行的重复。
这是我的密码
public class MainActivity extends ActionBarActivity implements SwipeRefreshLayout.OnRefreshListener {
private String TAG = MainActivity.class.getSimpleName();
private String URL_TOP_250 = "My_url";
private SwipeRefreshLayout swipeRefreshLayout;
private ListView listView;
private SwipeListAdapter adapter;
private List<Movie> movieList;
// initially offset will be 0, later will be updated while parsing the json
private int offSet = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
movieList = new ArrayList<>();
adapter = new SwipeListAdapter(this, movieList);
listView.setAdapter(adapter);
swipeRefreshLayout.setOnRefreshListener(this);
/**
* Showing Swipe Refresh animation on activity create
* As animation won't start on onCreate, post runnable is used
*/
swipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(true);
fetchMovies();
}
}
);
}
/**
* This method is called when swipe refresh is pulled down
*/
@Override
public void onRefresh() {
fetchMovies();
}
/**
* Fetching movies json by making http call
*/
private void fetchMovies() {
// showing refresh animation before making http call
swipeRefreshLayout.setRefreshing(true);
String url = URL_TOP_250;
// Volley's json array request object
JsonArrayRequest req = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
if (response.length() > 0) {
// looping through json and adding to movies list
for (int i = 0; i < response.length(); i++) {
try {
JSONObject movieObj = response.getJSONObject(i);
String title = movieObj.getString("title");
String desc = movieObj.getString("desc");
Movie m = new Movie(title,desc);
movieList.add(0,m);
// HashSet hs = new HashSet();
// hs.addAll(al);
//al.clear();
//al.addAll(hs);
} catch (JSONException e) {
Log.e(TAG, "JSON Parsing error: " + e.getMessage());
}
}
adapter.notifyDataSetChanged();
}
// stopping swipe refresh
swipeRefreshLayout.setRefreshing(false);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Server Error: " + error.getMessage());
//Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
// stopping swipe refresh
swipeRefreshLayout.setRefreshing(false);
}
});
// Adding request to request queue
MyApplication.getInstance().addToRequestQueue(req);
}
就打电话
if(movieList!=null) {
movieList.clear();
}
在取电影之前,只需打电话
if(movieList!=null) {
movieList.clear();
}
在获取电影之前,请执行以下步骤:
你好,vaibhav,它正在工作,但是如果我刷新它3次,应用程序就会崩溃。我已经将代码作为fetchMovies()方法上的第2条语句放在顶部。请发送一份日志副本。SwipeListAdapter.java的第60行似乎有一个arrayoutofboundexception,我们可以看看吗?你好,vaibhav,它正在工作,但是如果我刷新它3次,应用程序就会崩溃。我已经将代码作为fetchMovies()方法上的第2条语句。请将我的帖子放在顶部。只需发送一份日志副本。SwipeListAdapter.java的第60行似乎有arrayoutofboundexception,我们可以看看吗?