Android:自动刷新列表视图的位置和方式(我有刷新功能)
这是我的主要活动,我真的需要帮助创建一个功能,将自动刷新列表视图每分钟 在我的主要活动中,我有以下代码:Android:自动刷新列表视图的位置和方式(我有刷新功能),android,Android,这是我的主要活动,我真的需要帮助创建一个功能,将自动刷新列表视图每分钟 在我的主要活动中,我有以下代码: //This method is called when swipe refresh is pulled down @Override public void onRefresh() { fetchOrders(); } 我已经读了一些关于处理程序的文章,我得说我不知道把处理程序的代码放在哪里,因此如果你能帮我一把,并把我完整的main活动
//This method is called when swipe refresh is pulled down
@Override
public void onRefresh() {
fetchOrders();
}
我已经读了一些关于处理程序的文章,我得说我不知道把处理程序的代码放在哪里,因此如果你能帮我一把,并把我完整的main活动和其他需要的代码一起发布,我将不胜感激
提前谢谢
public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {
private int mInterval = 5000; // 5 seconds by default, can be changed later
private Handler mHandler;
private String TAG = MainActivity.class.getSimpleName();
private String URL = "http://troyka.esy.es/troyka/orders.php";
private SwipeRefreshLayout swipeRefreshLayout;
private ListView listView;
private SwipeListAdapter adapter;
private List<Order> orderList;
// 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);
//RelativeLayout.LayoutParams layout_description = new RelativeLayout.LayoutParams(50,10);
//Rl.setLayoutParams(layout_description);
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
orderList = new ArrayList<>();
adapter = new SwipeListAdapter(this, orderList);
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);
fetchOrders();
}
}
);
mHandler = new Handler();
startRepeatingTask();
}
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
//updateStatus(); //this function can change value of mInterval.
mHandler.postDelayed(mStatusChecker, mInterval);
}
};
void startRepeatingTask() {
mStatusChecker.run();
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mStatusChecker);
}
/**
* This method is called when swipe refresh is pulled down
*/
@Override
public void onRefresh() {
fetchOrders();
}
/**
* Fetching movies json by making http call
*/
private void fetchOrders() {
// showing refresh animation before making http call
swipeRefreshLayout.setRefreshing(true);
// appending offset to url
String url = URL + offSet;
// 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 order list
for (int i = 0; i < response.length(); i++) {
try {
JSONObject orderObj = response.getJSONObject(i);
int rank = orderObj.getInt("rank");
String title = orderObj.getString("title");
Order m = new Order(rank, title);
orderList.add(0, m);
// updating offset value to highest value
if (rank >= offSet)
offSet = rank;
} 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);
}
}
public类MainActivity扩展AppCompatActivity实现SwipeRefreshLayout.OnRefreshListener{
private int mInterval=5000;//默认为5秒,可以稍后更改
私人经理人;
私有字符串标记=MainActivity.class.getSimpleName();
专用字符串URL=”http://troyka.esy.es/troyka/orders.php";
私人SwipeRefreshLayout SwipeRefreshLayout;
私有列表视图列表视图;
专用SwipeListAdapter适配器;
私有列表订单列表;
//初始偏移量为0,稍后在解析json时更新
私有整数偏移=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.listView);
//RelativeLayout.LayoutParams布局\ U描述=新的RelativeLayout.LayoutParams(50,10);
//Rl.setLayoutParams(布局描述);
swipeRefreshLayout=(swipeRefreshLayout)findViewById(R.id.swipe\u refresh\u layout);
orderList=新的ArrayList();
适配器=新SwipeListAdapter(此为订单列表);
setAdapter(适配器);
swipeRefreshLayout.setOnRefreshListener(此);
/**
*在“创建活动”上显示滑动刷新动画
*由于动画不会在onCreate上启动,因此会使用post runnable
*/
swipeRefreshLayout.post(新的Runnable(){
@凌驾
公开募捐{
swipeRefreshLayout.setRefreshing(true);
fetchOrders();
}
}
);
mHandler=新处理程序();
startRepeatingTask();
}
Runnable mStatusChecker=new Runnable(){
@凌驾
公开募捐{
//updateStatus();//此函数可以更改mInterval的值。
mHandler.postDelayed(mStatusChecker,mInterval);
}
};
void startRepeatingTask(){
mStatusChecker.run();
}
void stopRepeatingTask(){
mHandler.removeCallbacks(mStatusChecker);
}
/**
*下拉滑动刷新时调用此方法
*/
@凌驾
公共void onRefresh(){
fetchOrders();
}
/**
*通过http调用获取电影json
*/
私人订单(){
//在进行http调用之前显示刷新动画
swipeRefreshLayout.setRefreshing(true);
//将偏移量追加到url
字符串url=url+偏移量;
//Volley的json数组请求对象
JsonArrayRequest req=新的JsonArrayRequest(url,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
if(response.length()>0){
//通过json循环并添加到订单列表
对于(int i=0;i=偏移)
偏移量=秩;
}捕获(JSONException e){
Log.e(标记“JSON解析错误:”+e.getMessage());
}
}
adapter.notifyDataSetChanged();
}
//停止刷卡刷新
swipeRefreshLayout.setRefreshing(false);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(标记“服务器错误:+Error.getMessage());
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_LONG.show();
//停止刷卡刷新
swipeRefreshLayout.setRefreshing(false);
}
});
//将请求添加到请求队列
MyApplication.getInstance().addToRequestQueue(req);
}
}
您可以通过向处理程序添加延迟的任务来实现这一点。以下是完整的代码:
public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {
private int mInterval = 5000; // 5 seconds by default, can be changed later
private Handler mHandler;
private String TAG = MainActivity.class.getSimpleName();
private String URL = "http://troyka.esy.es/troyka/orders.php";
private SwipeRefreshLayout swipeRefreshLayout;
private ListView listView;
private SwipeListAdapter adapter;
private List<Order> orderList;
// 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);
//RelativeLayout.LayoutParams layout_description = new RelativeLayout.LayoutParams(50,10);
//Rl.setLayoutParams(layout_description);
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
orderList = new ArrayList<>();
adapter = new SwipeListAdapter(this, orderList);
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);
fetchOrders();
}
}
);
mHandler = new Handler();
startRepeatingTask();
}
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
//updateStatus(); //this function can change value of mInterval.
mHandler.postDelayed(mStatusChecker, mInterval);
}
};
void startRepeatingTask() {
mStatusChecker.run();
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mStatusChecker);
}
//added code start here
Runnable mAutoRefreshRunnable = new Runnable() {
@Override
public void run() {
fetchOrders()
mHandler.postDelayed(mAutoRefreshRunnable, 1000);
}
};
@Override
protected void onResume() {
mHandler.postDelayed(mAutoRefreshRunnable, 1000);
}
@Override
protected void onPause() {
mHandler.removeCallbacks(mAutoRefreshRunnable);
}
//added code ends here
/**
* This method is called when swipe refresh is pulled down
*/
@Override
public void onRefresh() {
fetchOrders();
}
/**
* Fetching movies json by making http call
*/
private void fetchOrders() {
// showing refresh animation before making http call
swipeRefreshLayout.setRefreshing(true);
// appending offset to url
String url = URL + offSet;
// 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 order list
for (int i = 0; i < response.length(); i++) {
try {
JSONObject orderObj = response.getJSONObject(i);
int rank = orderObj.getInt("rank");
String title = orderObj.getString("title");
Order m = new Order(rank, title);
orderList.add(0, m);
// updating offset value to highest value
if (rank >= offSet)
offSet = rank;
} 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);
}
}
public类MainActivity扩展AppCompatActivity实现SwipeRefreshLayout.OnRefreshListener{
private int mInterval=5000;//默认为5秒,可以稍后更改
私人经理人;
私有字符串标记=MainActivity.class.getSimpleName();
专用字符串URL=”http://troyka.esy.es/troyka/orders.php";
私人SwipeRefreshLayout SwipeRefreshLayout;
私有列表视图列表视图;
专用SwipeListAdapter适配器;
私有列表订单列表;
//初始偏移量为0,稍后在解析json时更新
私有整数偏移=0;
@凌驾
创建时受保护的void(捆绑