Unten ist ein funktionierendes Beispiel. Bitte überprüfen Sie es einmal und schnelle Lösung für dieses Problem ist
Ändern Sie die folgenden Zeilen Code
contactAdapter.notifyDataSetChanged();
contactAdapter.setLoaded();
int arrayCount = getJsonArray.length();
Log.e("Mainactivity", "ArrayCount::" + arrayCount);
recyclerView.setAdapter(contactAdapter);
zu
contactAdapter.notifyDataSetChanged();
contactAdapter.setLoaded();
int arrayCount = getJsonArray.length();
Log.e("Mainactivity", "ArrayCount::" + arrayCount);
Ich bin nicht sicher, genau diese Antwort ist, aber versuchen, dieses eine Mal. Aber unter dem Code funktioniert. :)
MembersList_Activity:
package com.veda.Activites;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.veda.pravra.Adapters.MembersList_Adapter;
import com.veda.pravra.Global.MyUtils;
import com.veda.pravra.Interface.OnLoadMoreListener;
import com.veda.pravra.Models.AllMember_Model;
import com.veda.pravra.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class MembersList_Activity extends AppCompatActivity {
MembersList_Adapter contactAdapter;
@BindView(R.id.my_recycler_view)
RecyclerView recyclerView;
List<AllMember_Model> membersList;
int status;
String Message, subUrl;
@BindView(R.id.progressBar)
ProgressBar progressBar;
RecyclerView.LayoutManager layoutManager;
@BindView(R.id.tv_noData_memberActivity)
TextView noData;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_allMembers:
membersList = new ArrayList<>();
contactAdapter = new MembersList_Adapter(recyclerView, membersList, MembersList_Activity.this);
subUrl = "hostelID=" + MyUtils.getValueFromSharedPreferences(MembersList_Activity.this, "hstl_ID", "");
if (MyUtils.isInternetAvailable(getApplicationContext())) {
getAllMembersList(subUrl);
} else {
MyUtils.showAlertDialog(getApplicationContext(), getString(R.string.alerts), getString(R.string.noInternetMessage));
}
//set load more listener for the RecyclerView adapter
contactAdapter.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore() {
subUrl = subUrl + "&start=" + membersList.size();
if (MyUtils.isInternetAvailable(getApplicationContext())) {
loadMoreData(subUrl);
} else {
MyUtils.showAlertDialog(getApplicationContext(), getString(R.string.alerts), getString(R.string.noInternetMessage));
}
}
});
MyUtils.pendingMembersList = false;
return true;
case R.id.navigation_pendingMembers:
membersList = new ArrayList<>();
contactAdapter = new MembersList_Adapter(recyclerView, membersList, MembersList_Activity.this);
subUrl = "hostelID=" + MyUtils.getValueFromSharedPreferences(MembersList_Activity.this, "hstl_ID", "")
+ "&isPending=1";
if (MyUtils.isInternetAvailable(getApplicationContext())) {
getAllMembersList(subUrl);
} else {
MyUtils.showAlertDialog(getApplicationContext(), getString(R.string.alerts), getString(R.string.noInternetMessage));
}
//set load more listener for the RecyclerView adapter
contactAdapter.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore() {
subUrl = subUrl + "&start=" + membersList.size();
if (MyUtils.isInternetAvailable(getApplicationContext())) {
loadMoreData(subUrl);
} else {
MyUtils.showAlertDialog(getApplicationContext(), getString(R.string.alerts), getString(R.string.noInternetMessage));
}
}
});
MyUtils.pendingMembersList = true;
return true;
case R.id.navigation_vacatedMembers:
membersList = new ArrayList<>();
contactAdapter = new MembersList_Adapter(recyclerView, membersList, MembersList_Activity.this);
subUrl = "hostelID=" + MyUtils.getValueFromSharedPreferences(MembersList_Activity.this, "hstl_ID", "")
+ "&isVacated=1";
if (MyUtils.isInternetAvailable(getApplicationContext())) {
getAllMembersList(subUrl);
} else {
MyUtils.showAlertDialog(getApplicationContext(), getString(R.string.alerts), getString(R.string.noInternetMessage));
}
//set load more listener for the RecyclerView adapter
contactAdapter.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore() {
subUrl = subUrl + "&start=" + membersList.size();
if (MyUtils.isInternetAvailable(getApplicationContext())) {
loadMoreData(subUrl);
} else {
MyUtils.showAlertDialog(getApplicationContext(), getString(R.string.alerts), getString(R.string.noInternetMessage));
}
}
});
MyUtils.pendingMembersList = false;
return true;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_members);
ButterKnife.bind(this);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
membersList = new ArrayList<>();
recyclerView.setLayoutManager(new LinearLayoutManager(MembersList_Activity.this));
contactAdapter = new MembersList_Adapter(recyclerView, membersList, MembersList_Activity.this);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
//set load more listener for the RecyclerView adapter
contactAdapter.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore() {
subUrl = subUrl + "&start=" + membersList.size();
loadMoreData(subUrl);
}
});
}
private void loadMoreData(String subUrl) {
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
MyUtils.BASE_URL + "Hostel/hostalUsers?" + subUrl, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
status = response.getInt("status");
Message = response.getString("message");
if (status == 1) {
recyclerView.setVisibility(View.VISIBLE);
noData.setVisibility(View.GONE);
JSONArray membersArray = response.getJSONArray("result");
for (int i = 0; i < membersArray.length(); i++) {
JSONObject obj = membersArray.getJSONObject(i);
AllMember_Model amm = new AllMember_Model();
amm.setUserID(obj.getString("userID"));
amm.setMemebrName(obj.getString("userName"));
amm.setFatherName(obj.getString("fatherName"));
amm.setDob(obj.getString("dob"));
amm.setOccupation(obj.getString("occupation"));
amm.setContactNumber(obj.getString("contactNumber"));
amm.setPermanentAddress(obj.getString("permanentAddress"));
amm.setImage(obj.getString("image"));
membersList.add(amm);
}
contactAdapter.notifyDataSetChanged();
contactAdapter.setLoaded();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MembersList_Activity.this, error.toString(), Toast.LENGTH_SHORT).show();
}
});
queue.add(jsonObjReq);
}
@Override
protected void onResume() {
super.onResume();
if (MyUtils.isInternetAvailable(getApplicationContext())) {
subUrl = "hostelID=" + MyUtils.getValueFromSharedPreferences(MembersList_Activity.this, "hstl_ID", "");
getAllMembersList(subUrl);
} else {
MyUtils.showAlertDialog(getApplicationContext(), getString(R.string.alerts), getString(R.string.noInternetMessage));
}
}
private void getAllMembersList(String subUrl) {
progressBar.setVisibility(View.VISIBLE);
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
MyUtils.BASE_URL + "Hostel/hostalUsers?" + subUrl, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
status = response.getInt("status");
Message = response.getString("message");
if (status == 1) {
recyclerView.setVisibility(View.VISIBLE);
noData.setVisibility(View.GONE);
JSONArray membersArray = response.getJSONArray("result");
for (int i = 0; i < membersArray.length(); i++) {
JSONObject obj = membersArray.getJSONObject(i);
AllMember_Model amm = new AllMember_Model();
amm.setUserID(obj.getString("userID"));
amm.setMemebrName(obj.getString("userName"));
amm.setFatherName(obj.getString("fatherName"));
amm.setDob(obj.getString("dob"));
amm.setOccupation(obj.getString("occupation"));
amm.setContactNumber(obj.getString("contactNumber"));
amm.setPermanentAddress(obj.getString("permanentAddress"));
amm.setImage(obj.getString("image"));
membersList.add(amm);
}
recyclerView.setAdapter(contactAdapter);
} else {
recyclerView.setVisibility(View.GONE);
noData.setVisibility(View.VISIBLE);
noData.setText(Message);
}
} catch (JSONException e) {
e.printStackTrace();
}
progressBar.setVisibility(View.INVISIBLE);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MembersList_Activity.this, error.toString(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.INVISIBLE);
}
});
queue.add(jsonObjReq);
}
}
Adapter Klasse
package com.veda.pravra.Adapters;
/**
* Created by veda on 7/9/2017.
*/
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.veda.pravra.hosteladmin.Activites.AddMember;
import com.veda.pravra.hosteladmin.Global.MyUtils;
import com.veda.pravra.hosteladmin.Interface.OnLoadMoreListener;
import com.veda.pravra.hosteladmin.Models.AllMember_Model;
import com.veda.pravra.hosteladmin.R;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import static android.R.id.message;
public class MembersList_Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int VIEW_TYPE_ITEM = 0;
private final int VIEW_TYPE_LOADING = 1;
OnLoadMoreListener onLoadMoreListener;
private boolean isLoading;
private Activity activity;
private List<AllMember_Model> contacts;
private int visibleThreshold = 10;
private int lastVisibleItem, totalItemCount;
public MembersList_Adapter(RecyclerView recyclerView, List<AllMember_Model> contacts, Activity activity) {
this.contacts = contacts;
this.activity = activity;
final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
totalItemCount = linearLayoutManager.getItemCount();
lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
if (!isLoading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
if (onLoadMoreListener != null) {
onLoadMoreListener.onLoadMore();
}
isLoading = true;
}
}
});
}
public void setOnLoadMoreListener(OnLoadMoreListener mOnLoadMoreListener) {
this.onLoadMoreListener = mOnLoadMoreListener;
}
@Override
public int getItemViewType(int position) {
return contacts.get(position) == null ? VIEW_TYPE_LOADING : VIEW_TYPE_ITEM;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == VIEW_TYPE_ITEM) {
View view = LayoutInflater.from(activity).inflate(R.layout.members_list_row, parent, false);
return new UserViewHolder(view);
} else if (viewType == VIEW_TYPE_LOADING) {
View view = LayoutInflater.from(activity).inflate(R.layout.item_loading, parent, false);
return new LoadingViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof UserViewHolder) {
AllMember_Model itemList = contacts.get(position);
UserViewHolder userViewHolder = (UserViewHolder) holder;
if (MyUtils.pendingMembersList) {
userViewHolder.buttonsLayout.setVisibility(View.VISIBLE);
}
userViewHolder.memberName.setText(itemList.getMembrName());
userViewHolder.memberDOB.setText(itemList.getDob());
userViewHolder.memberOccupation.setText(itemList.getOccupation());
userViewHolder.memberAddress.setText(itemList.getPermanentAddress());
} else if (holder instanceof LoadingViewHolder) {
LoadingViewHolder loadingViewHolder = (LoadingViewHolder) holder;
loadingViewHolder.progressBar.setIndeterminate(true);
}
}
@Override
public int getItemCount() {
return contacts == null ? 0 : contacts.size();
}
public void setLoaded() {
isLoading = false;
}
//For alert dialog
public void ShowPaidDetailsDialog() {
final Dialog dialog = new Dialog(activity, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.movetopaid_dialog);
dialog.setTitle(R.string.paymentConfirmation);
final CheckBox fullPaid = (CheckBox) dialog.findViewById(R.id.cb_fullPaid);
final CheckBox paidAmount = (CheckBox) dialog.findViewById(R.id.cb_PaidAmount);
final EditText etpaidAmount = (EditText) dialog.findViewById(R.id.et_PaidAmount);
Button update = (Button) dialog.findViewById(R.id.btnUpdate);
fullPaid.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
paidAmount.setChecked(false);
etpaidAmount.setVisibility(View.GONE);
}
}
});
paidAmount.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
fullPaid.setChecked(false);
etpaidAmount.setVisibility(View.VISIBLE);
}
}
});
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Close dialog
if (paidAmount.isChecked()) {
if (etpaidAmount.getText().toString().isEmpty()) {
etpaidAmount.setError("Enter paid amount");
} else {
Toast.makeText(activity, "paid", Toast.LENGTH_SHORT).show();
}
}
dialog.dismiss();
}
});
dialog.show();
}
private class LoadingViewHolder extends RecyclerView.ViewHolder {
public ProgressBar progressBar;
public LoadingViewHolder(View view) {
super(view);
progressBar = (ProgressBar) view.findViewById(R.id.progressBar1);
}
}
public class UserViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.memberName)
TextView memberName;
@BindView(R.id.memberDOB)
TextView memberDOB;
@BindView(R.id.memberAddress)
TextView memberAddress;
@BindView(R.id.memberOccupation)
TextView memberOccupation;
@BindView(R.id.buttonsLayout)
LinearLayout buttonsLayout;
@BindView(R.id.btn_paid)
Button buttonPaid;
@BindView(R.id.btn_vacated)
Button buttonVacated;
public UserViewHolder(View view) {
super(view);
view.setOnClickListener(this);
ButterKnife.bind(this, view);
buttonPaid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ShowPaidDetailsDialog();
}
});
buttonVacated.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, "Vacated", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onClick(View v) {
AllMember_Model itemList11 = contacts.get(getPosition());
Intent i = new Intent(activity, AddMember.class);
i.putExtra("membersList", itemList11);
activity.startActivity(i);
//Toast.makeText(activity, "" + getPosition(), Toast.LENGTH_SHORT).show();
}
}
}
Ich rufe sendRequesttoServerForMoreDeals() – Niraj
keine Notwendigkeit Adapter wieder einzustellen, sobald Daten eingestellt ist, rufen Sie einfach notifydatasetchanged – warlock