大家好,您能帮我解决从json删除,添加或更新数据时recyclerview应该自动更新的问题吗?

如何解决大家好,您能帮我解决从json删除,添加或更新数据时recyclerview应该自动更新的问题吗?

我有一个问题,我的代码无法自动更新json更改中的每个数据, 更改应该自动发生在这里,我正在使用凌空库来处理它们

MainActivity

public class Gaji extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private static final String TAG = MainActivity.class.getSimpleName();
    private ExampleAdapter mExampleAdapter;
    private ArrayList<ExampleItem> mExampleList;
    private RequestQueue mRequestQueue;
    private RecyclerView.Adapter adapter;
    SessionManager sessionManager;
    String getId;
    String tag_json_obj = "json_obj_req";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gaji);
        mRecyclerView = findViewById(R.id.recycler_view);
        sessionManager = new SessionManager(this);
        HashMap<String,String> user = sessionManager.getUserDetail();
        getId = user.get(sessionManager.ID);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new linearlayoutmanager(this));
        mExampleList = new ArrayList<>();
        mRequestQueue = Volley.newRequestQueue(this);
        BottomNavigationView bottomNavigationView = findViewById(R.id.bottom);
        bottomNavigationView.setSelectedItemId(R.id.gaji);
        bottomNavigationView.setonNavigationItemSelectedListener(new 
        BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.gaji:
                        break;
                    case R.id.home:
                        //Beranda
                        startActivity(new Intent(getApplicationContext(),MainActivity.class ));
                        overridePendingTransition(0,0);
                        break;
                    case R.id.absen:
                        //Presensi harian
                        startActivity(new Intent(getApplicationContext(),Izin.class ));
                        overridePendingTransition(0,0);
                        break;
                    case R.id.scan:
                        //Scan
                        startActivity(new Intent(getApplicationContext(),ScanQrBarcode.class ));
                        overridePendingTransition(0,0);
                        break;
                    case R.id.profile:
                        //Profile
                        startActivity(new Intent(getApplicationContext(),Profile.class ));
                        overridePendingTransition(0,0);
                        break;
                }
                return false;
            }
        });
        parseJSON();
    }
    private void parseJSON() {
        String url = Constans.BaseUrl +"gaji.PHP";
        StringRequest stringRequest = new StringRequest(Request.Method.POST,url,new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.i(TAG,response.toString());
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            JSONArray jsonArray = jsonObject.getJSONArray("hasil");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject hit     = jsonArray.getJSONObject(i);
                                String creatorName = hit.getString("gaji_pokok");
                                String asuransi    = hit.getString("asuransi");
                                String potongan    = hit.getString("potongan");
                                mExampleList.add(new ExampleItem(creatorName,asuransi,potongan));
                            }
                            mExampleAdapter = new ExampleAdapter(Gaji.this,mExampleList);
                            mRecyclerView.setAdapter(mExampleAdapter);
                            mExampleAdapter.notifyDataSetChanged();
                        } catch (JSONException e) {
                            e.printstacktrace();
                        } 
                    }
                },new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printstacktrace();
            }
        }){
            @Override
            protected Map<String,String> getParams() {
                // Posting parameters ke post url
                Map<String,String> params = new HashMap<>();
                params.put("id_pegawai",getId);
                return params;
            }};
        AppController.getInstance().addToRequestQueue(stringRequest,tag_json_obj);
    }
}

Adapter

public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {
    private Context mContext;
    private ArrayList<ExampleItem> mExampleList;
    public ExampleAdapter(Context context,ArrayList<ExampleItem> exampleList) {
        mContext = context;
        mExampleList = exampleList;
    }
    @Override
    public ExampleViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
    View v = LayoutInflater.from(mContext).inflate(R.layout.example_item,parent,false);
        return new ExampleViewHolder(v);
    }
    @Override
    public void onBindViewHolder(ExampleViewHolder holder,int position) {
        ExampleItem currentItem = mExampleList.get(position);
        String creatorName = currentItem.getCreator();
        String likeCount   = currentItem.getLikeCount();
        String potongan    = currentItem.getpotongan();
        holder.mTextViewCreator.setText("gaji pokok: " +creatorName);
        holder.mTextViewLikes.setText("asuransi: " + likeCount);
        holder.mPotongan.setText("potongan: " + potongan);
    }
    @Override
    public int getItemCount() {
        return mExampleList.size();
    }
    public class ExampleViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextViewCreator;
        public TextView mTextViewLikes;
        public TextView mPotongan;
        public ExampleViewHolder(View itemView) {
            super(itemView);
            mTextViewCreator = itemView.findViewById(R.id.text_view_creator);
            mTextViewLikes = itemView.findViewById(R.id.text_view_likes);
            mPotongan = itemView.findViewById(R.id.text_view_potongan);
        }
    }
}

Model

public class ExampleItem {
    private String mCreator;
    private String mLikes;
    private String mPotongan;
    public ExampleItem(String creator,String likes,String potongan) {
        mCreator = creator;
        mLikes = likes;
        mPotongan = potongan;
    }

    public String getCreator() {
        return mCreator;
    }
    public String getLikeCount() {
        return mLikes;
    }

    public String getpotongan() {
        return mPotongan;
    }
}

解决方法

您应该使用Recyclerview.Adapter类中的notifyDataSetChanged()或notifyItemChanged()方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?