首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聊天室未更新

聊天室未更新
EN

Stack Overflow用户
提问于 2018-09-02 01:01:04
回答 1查看 70关注 0票数 0

我想用房间更新listview中的元素,但它不起作用。添加和删除可以正常工作,但更新不能。这里是我的代码

代码语言:javascript
复制
@Insert
    public void addZakazi(Zakazi zakazi);

    @Query("select * from orders")
    public List<Zakazi> getZakazi();
    @Delete
    public void deleteZakazi(Zakazi zakaz);
    @Update
    public void updateZakazi(Zakazi zakazi);

代码片段,我按下按钮,它调用另一个片段

代码语言:javascript
复制
update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Zakazi zakaz=getItem(position);
                String cNam=zakaz.getClName();
                String o=zakaz.getOrder();
                int pric=zakaz.getPricec();
                Bundle bundle=new Bundle();
                bundle.putInt("price",pric);
                bundle.putString("cName",cNam);
                bundle.putString("order",o);
               updateFragment uf =new updateFragment();
               uf.setArguments(bundle);
                FragmentTransaction ft=getFragmentManager().beginTransaction();
                ft.replace(R.id.fragmentContainer, uf);
                ft.addToBackStack(null);
                ft.commit();
            }
        });

        return convertView;
    }

必须进行更新的被调用片段的代码

代码语言:javascript
复制
@Override
    public View onCreateView( LayoutInflater inflater,  ViewGroup parent,  Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.update_order_layout,parent,false);
        Cname=(EditText)view.findViewById(R.id.clients_name_up);
        price=(EditText)view.findViewById(R.id.price_edit_up);
        order=(EditText)view.findViewById(R.id.order_edit_up);
        updateB=(Button)view.findViewById(R.id.updateB);
Bundle bundle=getArguments();
String ord=bundle.getString("order");
String clnam=bundle.getString("cName");
int pri=bundle.getInt("price");
Cname.setText(clnam);
price.setText(String.valueOf(pri));
order.setText(ord);
updateB.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       String cn=Cname.getText().toString();
       String orderr=order.getText().toString();
       int p=Integer.parseInt(price.getText().toString());

        Zakazi zakazi=new Zakazi();
        zakazi.setClName(cn);
        zakazi.setOrder(orderr);
        zakazi.setPricec(p);
        OrderActivity.myAppDatabase.myDao().updateZakazi(zakazi);
    }
});
        return view;

    }
EN

回答 1

Stack Overflow用户

发布于 2018-09-02 02:00:12

问题是,当您要更新数据时,您正在创建Zakazi的新对象。所以在你的对象中没有设置主键id的值,房间数据库根据这个值来更新你的记录。

您必须按照以下步骤更新您的代码:

  1. 在第一个片段中使用Zakazi中的getId()获取自动生成的update.setOnClickListener记录的id
  2. 传递该id,而不是价格、名称和订单。
  3. 使用您在另一个片段中捆绑收到的id获取Zakazi对象中的数据。<代码>H210<代码>H111在<代码>D12中更新您从数据库中提取数据的同一对象中的数据,而不是创建新数据,然后尝试通过查询OrderActivity.myAppDatabase.myDao().updateZakazi(zakazi);

更新聊天室数据库中的记录

希望它能为你工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52130379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档