我有一个listview,它是由Json从sqlite数据库中获取数据.
我想把它变成动态列表视图,在滚动结束时,在加载更多项目并将它们添加到适配器(例如每次10个项目)时,列表的页脚中会出现“加载更多项目”.我在实现此功能时遇到问题.请帮帮我.谢谢.
public class AllProductsActivity extends Activity {... defining variables...;@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new LoadAllProducts().execute();}class LoadAllProducts extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); ... progress dialog... } protected String doInBackground(String... args) { countryList = new ArrayList<Country>(); List<NameValuePair> params = new ArrayList<NameValuePair>(); JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); Log.d("All Products: ", json.toString()); try { // Checking for SUCCESS TAG int success = json.getInt(TAG_SUCCESS); if (success == 1) { // products found // Getting Array of Products products = json.getJSONArray(TAG_PRODUCTS); // looping through All Products for (int i = 0; i < products.length(); i ) { JSONObject c = products.getJSONObject(i); // Storing each json item in variable String id = c.getString(TAG_PID); String name = c.getString(TAG_NAME); String description = c.getString(TAG_DESCRIPTION); String due_date = c.getString(TAG_DUE_DATE); String staff = c.getString(TAG_STAFF); String status = c.getString(TAG_STATUS); country = new Country(id,name,description, due_date, staff, status); countryList.add(country); } } } catch (JSONException e) { e.printStackTrace(); } return null; } protected void onPostExecute(String file_url) { pDialog.dismiss(); runOnUiThread(new Runnable() { public void run() { displayListView(); } }); }}private void displayListView() { dataAdapter = new MyCustomAdapter(this, R.layout.country_info, countryList); ListView listView = (ListView) findViewById(R.id.listView1); listView.setAdapter(dataAdapter);}private class MyCustomAdapter extends ArrayAdapter<Country> { ... blah blah blah ... @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; Log.v("ConvertView", String.valueOf(position)); if (convertView == null) { ... blah blah blah ... } return convertView; }}}
解决方法:
您尝试以下代码
list.setOnScrollListener(new OnScrollListener() { public void onScrollStateChanged(AbsListView view, int scrollState) { } public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(firstVisibleItem visibleItemCount == totalItemCount && totalItemCount!=0) { if(flag_loading == false) { flag_loading = true; additems(); } } } });
在additem()中将接下来的10个项添加到数组列表中,并将flag_loading设置为false.并调用notifydatasetchanged.它应该工作.
来源:https://www.icode9.com/content-4-455251.html联系客服