Java 更新Mysql数据库时无法在Android中更新用户界面
我正在开发一个电子商务应用程序 我正在从siteground使用mysql数据库,并使用Volley类检索数据。问题是,当我在表中填充任何新数据时,当我重新打开片段时,它也应该反映在片段中,但它没有发生 我必须卸载我的应用程序,然后重新运行android代码,然后才能在我的回收器视图中看到更新的数据。我在类中使用字符串请求来检索数据。我不知道是什么问题;是不是因为我无法正确关闭该片段,并且它正在加载以前的数据,直到我不卸载它 这是我的片段Java 更新Mysql数据库时无法在Android中更新用户界面,java,android,mysql,Java,Android,Mysql,我正在开发一个电子商务应用程序 我正在从siteground使用mysql数据库,并使用Volley类检索数据。问题是,当我在表中填充任何新数据时,当我重新打开片段时,它也应该反映在片段中,但它没有发生 我必须卸载我的应用程序,然后重新运行android代码,然后才能在我的回收器视图中看到更新的数据。我在类中使用字符串请求来检索数据。我不知道是什么问题;是不是因为我无法正确关闭该片段,并且它正在加载以前的数据,直到我不卸载它 这是我的片段 public class Fragment_Women_
public class Fragment_Women_Apparels extends Fragment {
private View v;
private RecyclerView recyclerView;
ArrayList<String> id1,name,brand,gender,discount,desc,sellprice,markprice,rating,type,size,category,length,
image1,image2,image3,image4,image5,shop,color,stock,material;
//5cbytcuv57x4
ProgressBar progressBar;
Animation animation;
public Fragment_Women_Apparels() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_women__apparels_, container, false);
progressBar=v.findViewById(R.id.progress);
animation= AnimationUtils.loadAnimation(getActivity(),R.anim.rotate);
progressBar.startAnimation(animation);
id1=new ArrayList<>();
name=new ArrayList<>();
brand=new ArrayList<>();
gender=new ArrayList<>();
discount=new ArrayList<>();
desc=new ArrayList<>();
sellprice=new ArrayList<>();
markprice=new ArrayList<>();
rating=new ArrayList<>();
type=new ArrayList<>();
size=new ArrayList<>();
category=new ArrayList<>();
length=new ArrayList<>();
image1=new ArrayList<>();
image2=new ArrayList<>();
image3=new ArrayList<>();
image4=new ArrayList<>();
image5=new ArrayList<>();
shop=new ArrayList<>();
color=new ArrayList<>();
stock=new ArrayList<>();
material=new ArrayList<>();
recyclerView=v.findViewById(R.id.recycler);
// recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(),2,RecyclerView.VERTICAL,false);
recyclerView.setLayoutManager(gridLayoutManager); // set LayoutManager to RecyclerView
RequestQueue rq = Volley.newRequestQueue(getActivity());
String url = "-------------------MY-----API-----------------------";
StringRequest sr= new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jo = new JSONObject(response);
JSONArray ja = jo.getJSONArray("result");
for(int i =0;i<ja.length();i++)
{
JSONObject jo1 = ja.getJSONObject(i);
String ID=jo1.getString("ID");
String NAME=jo1.getString("NAME");
String BRAND=jo1.getString("BRAND");
String GENDER=jo1.getString("GENDER");
String DISCOUNT=jo1.getString("DISCOUNT");
String DESC=jo1.getString("DESCRIPTION");
String SELLPRICE=jo1.getString("SELLPRICE");
String MARKPRICE=jo1.getString("MARKPRICE");
String RATING=jo1.getString("RATING");
String TYPE=jo1.getString("TYPE");
String SIZE=jo1.getString("SIZE");
String CATEGORY=jo1.getString("CATEGORY");
String LENGTH=jo1.getString("LENGTH");
String IMAGE1=jo1.getString("IMAGE1");
String IMAGE2=jo1.getString("IMAGE2");
String IMAGE3=jo1.getString("IMAGE3");
String IMAGE4=jo1.getString("IMAGE4");
String IMAGE5=jo1.getString("IMAGE5");
String SHOP=jo1.getString("SHOP");
String COLOR=jo1.getString("COLOR");
String STOCK=jo1.getString("STOCK");
String MATERIAL=jo1.getString("MATERIAL");
id1.add(ID);
name.add(NAME);
brand.add(BRAND);
gender.add(GENDER);
discount.add(DISCOUNT);
desc.add(DESC);
sellprice.add(SELLPRICE);
markprice.add(MARKPRICE);
rating.add(RATING);
type.add(TYPE);
size.add(SIZE);
category.add(CATEGORY);
length.add(LENGTH);
image1.add(IMAGE1);
image2.add(IMAGE2);
image3.add(IMAGE3);
image4.add(IMAGE4);
image5.add(IMAGE5);
shop.add(SHOP);
color.add(COLOR);
stock.add(STOCK);
material.add(MATERIAL);
}
Log.d("abcde",id1.get(0));
progressBar.clearAnimation();
progressBar.setVisibility(View.INVISIBLE);
} catch (JSONException e) {
e.printStackTrace();
}
recyclerView.setAdapter(new RecyclerAdapter(getActivity(),id1,name,brand,gender,discount,desc,sellprice,markprice,
rating,type,size,category,length,image1,image2,image3,image4,image5,shop,color,stock,material));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressBar.clearAnimation();
progressBar.setVisibility(View.INVISIBLE);
Toast.makeText(getActivity(),"Please check your internet connection...",Toast.LENGTH_LONG).show();
}
});
rq.add(sr);
return v;
}
}
public class Fragment\u Women\u appeals扩展Fragment{
私人观点v;
私人回收站;
ArrayList id1、名称、品牌、性别、折扣、描述、售价、标价、评级、类型、大小、类别、长度、,
图像1,图像2,图像3,图像4,图像5,商店,颜色,库存,材料;
//5cbytcuv57x4
ProgressBar ProgressBar;
动画;
公共服装{
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
v=充气机。充气(R.布局。碎片\女性\服装\容器,假);
progressBar=v.findViewById(R.id.progress);
animation=AnimationUtils.loadAnimation(getActivity(),R.anim.rotate);
progressBar.startAnimation(动画);
id1=新的ArrayList();
name=新的ArrayList();
brand=新的ArrayList();
性别=新ArrayList();
折扣=新的ArrayList();
desc=新的ArrayList();
sellprice=新的ArrayList();
markprice=newarraylist();
评级=新的ArrayList();
类型=新的ArrayList();
大小=新的ArrayList();
类别=新的ArrayList();
长度=新的ArrayList();
image1=新的ArrayList();
image2=新的ArrayList();
image3=新的ArrayList();
image4=新的ArrayList();
image5=新的ArrayList();
shop=newarraylist();
颜色=新的ArrayList();
stock=newarraylist();
材质=新的ArrayList();
recyclerView=v.findViewById(R.id.recycler);
//setLayoutManager(新的LinearLayoutManager(getActivity());
GridLayoutManager GridLayoutManager=新的GridLayoutManager(getActivity(),2,RecyclerView.VERTICAL,false);
setLayoutManager(gridLayoutManager);//将LayoutManager设置为recyclerView
RequestQueue rq=Volley.newRequestQueue(getActivity());
字符串url=“--------------我的----API-----------------”;
StringRequest sr=new StringRequest(Request.Method.GET,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject jo=新的JSONObject(响应);
JSONArray ja=jo.getJSONArray(“结果”);
对于(int i=0;i最终我得到了解决方案…问题是我使用的是Volley库,它默认具有启用缓存的功能…因此每当我更新数据库时,都不会在UI上反映出内容,因为为特定API保存了缓存…所以每次我都必须清除应用缓存以查看dat的更改贬低
解决方案是在将StringRequest添加到RequestQueue之前,使用StringRequest类的函数禁用缓存功能
sr.setShouldCache(错误);
rq.add(sr)
其中sr和rq是StringRequest和RequestQueue类的对象…当我看到你所有的数组列表时,我停止了阅读。你为什么这么做?你需要制作一个项目模型,每个项目都有一个id、名称、品牌、性别等。然后你只需将这些对象添加到一个数组列表中。你这样做完全是徒劳的ng…..但是,为了反映新数据,您需要在RecycleService上执行notifyDataSetChanged(),然后通过刷新或其他方式再次调用DB,刷新/更新/删除/添加arraylist,然后执行notifyDataSetChange()模型类中会有什么?有很多具有setter和getter的构造函数的示例。这些都是模型类。然后,您将有一个列表,而不是List.List.add(例如,new ModelClass(…))