ListView 在单击按钮时多次填充
ListView Populates multiple times on button click
我有一个应用程序可以显示来自我的服务器的数据
现在我的问题是我有一个 Listview,其中填充了来自服务器的 JSON 数据
这是为了显示记录的时间,我有一个截止日期和一个起始日期编辑文本来输入需要的日期
每次单击按钮时,列表视图都会填充,但之前加载的数据仍保留在列表视图中
我想要实现的是每次点击按钮之前的数据都会被清除,只显示新的数据
我正在使用 volley 从服务器获取 Json
我试过设置自定义适配器,将适配器设置为 Null
这是我的点击
Submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri.Builder builder2=new Uri.Builder();
builder2.scheme("https")
.authority("www.FAKEWEBSiTE.co.za")
.appendPath("DATA.asp")
.appendQueryParameter("ClientID", clientId)
.appendQueryParameter("Username", email)
.appendQueryParameter("Pwd", pwd)
.appendQueryParameter("FromDate", FromDate.getText().toString().trim())
.appendQueryParameter("ToDate", ToDate.getText().toString().trim());
URL2=builder2.build().toString();
LoadReport(URL2);
这是我加载 JSON 等的代码
private void LoadReport(String url) {
final ProgressDialog pd=new ProgressDialog(reportActivity.this);
pd.setMessage("Please Wait..Loading Time Log Data");
pd.setCanceledOnTouchOutside(false);
pd.show();
RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@TargetApi(Build.VERSION_CODES.N)
@Override
public void onResponse(String response) {
pd.cancel();
try {
JSONObject jsonObject=new JSONObject(response);
if (jsonObject.getInt("success") == 1) {
JSONArray jsonArray=jsonObject.getJSONArray("Name");
for (int i=0; i < jsonArray.length(); i++) {
JSONObject jsonObject1=jsonArray.getJSONObject(i);
String key=jsonObject1.keys().next();
String task=jsonObject1.getString(key);
Project.add(task);
}
report.setAdapter(new ArrayAdapter<>(reportActivity.this, android.R.layout.simple_spinner_dropdown_item, Project));
report.setClickable(false);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
error.printStackTrace();
}
});
int socketTimeout=30000;
RetryPolicy policy=new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
requestQueue.add(stringRequest);
}}
每次单击按钮时,您都必须清除传递给适配器的列表
Submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(Project!=null){
Project.clear();
}
Uri.Builder builder2=new Uri.Builder();
builder2.scheme("https")
.authority("www.FAKEWEBSiTE.co.za")
.appendPath("DATA.asp")
.appendQueryParameter("ClientID", clientId)
.appendQueryParameter("Username", email)
.appendQueryParameter("Pwd", pwd)
.appendQueryParameter("FromDate", FromDate.getText().toString().trim())
.appendQueryParameter("ToDate", ToDate.getText().toString().trim());
URL2=builder2.build().toString();
LoadReport(URL2);
我有一个应用程序可以显示来自我的服务器的数据
现在我的问题是我有一个 Listview,其中填充了来自服务器的 JSON 数据 这是为了显示记录的时间,我有一个截止日期和一个起始日期编辑文本来输入需要的日期
每次单击按钮时,列表视图都会填充,但之前加载的数据仍保留在列表视图中
我想要实现的是每次点击按钮之前的数据都会被清除,只显示新的数据
我正在使用 volley 从服务器获取 Json
我试过设置自定义适配器,将适配器设置为 Null
这是我的点击
Submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri.Builder builder2=new Uri.Builder();
builder2.scheme("https")
.authority("www.FAKEWEBSiTE.co.za")
.appendPath("DATA.asp")
.appendQueryParameter("ClientID", clientId)
.appendQueryParameter("Username", email)
.appendQueryParameter("Pwd", pwd)
.appendQueryParameter("FromDate", FromDate.getText().toString().trim())
.appendQueryParameter("ToDate", ToDate.getText().toString().trim());
URL2=builder2.build().toString();
LoadReport(URL2);
这是我加载 JSON 等的代码
private void LoadReport(String url) {
final ProgressDialog pd=new ProgressDialog(reportActivity.this);
pd.setMessage("Please Wait..Loading Time Log Data");
pd.setCanceledOnTouchOutside(false);
pd.show();
RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@TargetApi(Build.VERSION_CODES.N)
@Override
public void onResponse(String response) {
pd.cancel();
try {
JSONObject jsonObject=new JSONObject(response);
if (jsonObject.getInt("success") == 1) {
JSONArray jsonArray=jsonObject.getJSONArray("Name");
for (int i=0; i < jsonArray.length(); i++) {
JSONObject jsonObject1=jsonArray.getJSONObject(i);
String key=jsonObject1.keys().next();
String task=jsonObject1.getString(key);
Project.add(task);
}
report.setAdapter(new ArrayAdapter<>(reportActivity.this, android.R.layout.simple_spinner_dropdown_item, Project));
report.setClickable(false);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
error.printStackTrace();
}
});
int socketTimeout=30000;
RetryPolicy policy=new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
requestQueue.add(stringRequest);
}}
每次单击按钮时,您都必须清除传递给适配器的列表
Submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(Project!=null){
Project.clear();
}
Uri.Builder builder2=new Uri.Builder();
builder2.scheme("https")
.authority("www.FAKEWEBSiTE.co.za")
.appendPath("DATA.asp")
.appendQueryParameter("ClientID", clientId)
.appendQueryParameter("Username", email)
.appendQueryParameter("Pwd", pwd)
.appendQueryParameter("FromDate", FromDate.getText().toString().trim())
.appendQueryParameter("ToDate", ToDate.getText().toString().trim());
URL2=builder2.build().toString();
LoadReport(URL2);