如何解决大家好,您能帮我解决从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 举报,一经查实,本站将立刻删除。