So I made a recyclerview and when I ran the first time the code it worked. However, when I open my app again just to see it fails to populate the recyclerview list. time to time it will work, like when I have to change the IP again, but then it doesn't always. I'm left wondering why it fails, i only have 4 data records and 5 textviews inside each recylerview row.
Please help, I don't have anyone to check my codes personally so I'm appealing to the community, this is for my final thesis, not the exact codes, but once I get the hang of the recyclerview I think I could finish in time.
I have the my codes in github: https://github.com/jhungamesh/Volleylist3
It is totally not encouraged to give URL
of your whole project when it consists only of a total of 5 files
and only 2 files
are relevant to your error
.
In your file BackgroundTask
you are getting json from:
String json_url = "http://192.168.1.109/Sup2.php";
which is not at all reachable from outside of your network.
posting working code by given in answer here
MainActivity:
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerAdapter adapter;
RecyclerView.LayoutManager layoutManager;
ArrayList<Scoreboard_Item> arrayList;
//Your Url Change Live Url Put Here
String mJSONURLString = "http://192.168.1.109/Sup2.php";
//My testing Url
String mJSONURLStrings = "http://pastebin.com/raw/Em972E5s";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arrayList=new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.RecList);
CallApi();
/// BackgroundTask backgroundTask = new BackgroundTask(MainActivity.this);
// arrayList = backgroundTask.getList();
//fillPeople();
}
public void CallApi(){
RequestQueue requestQueue = Volley.newRequestQueue(getBaseContext());
// Initialize a new JsonArrayRequest instance
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.POST,
mJSONURLStrings,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for(int i=0;i<response.length();i++){
JSONObject data = null;
try {
data = response.getJSONObject(i);
//My Data
String firstName = data.getString("firstname");
String lastName = data.getString("lastname");
String age = data.getString("age");
//Scoreboard_Item scoreboard_item = new Scoreboard_Item(student.getString("Username"), student.getString("Team1"), student.getString("Team2"), student.getString("Sport"), student.getString("Status"));
Scoreboard_Item scoreboard_item = new Scoreboard_Item(firstName, lastName, age, age, firstName);
arrayList.add(scoreboard_item);
layoutManager = new LinearLayoutManager(getBaseContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
adapter = new RecyclerAdapter(arrayList);
recyclerView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
// Get the current student (json object) data
// Display the formatted json data in text view
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
// Do something when error occurred
}
}
);
// Add JsonArrayRequest to the RequestQueue
requestQueue.add(jsonArrayRequest);
}
}
Model class
public class Scoreboard_Item {
String Username, Team1, Team2, Sport, Status;
public Scoreboard_Item(String username, String team1, String team2, String sport, String status) {
this.setUsername(username);
this.setTeam1(team1);
this.setTeam2(team2);
this.setSport(sport);
this.setStatus(status);
}
public String getUsername() {
return Username;
}
public void setUsername(String username) {
Username = username;
}
public String getTeam1() {
return Team1;
}
public void setTeam1(String team1) {
Team1 = team1;
}
public String getTeam2() {
return Team2;
}
public void setTeam2(String team2) {
Team2 = team2;
}
public String getSport() {
return Sport;
}
public void setSport(String sport) {
Sport = sport;
}
public String getStatus() {
return Status;
}
public void setStatus(String status) {
Status = status; }}
Adapter
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>{
ArrayList<Scoreboard_Item> arrayList = new ArrayList<>();
public RecyclerAdapter(ArrayList<Scoreboard_Item> arrayList){
this.arrayList = arrayList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item, parent,false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.Username.setText(arrayList.get(position).getUsername());
holder.Team1.setText(arrayList.get(position).getTeam1());
holder.Team2.setText(arrayList.get(position).getTeam2());
holder.Sport.setText(arrayList.get(position).getSport());
holder.Status.setText(arrayList.get(position).getStatus());
}
@Override
public int getItemCount() {
return arrayList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder
{
TextView Username, Team1, Team2, Sport, Status;
//ImageView imageView;
public MyViewHolder(View itemView) {
super(itemView);
//imageView =(ImageView) itemView.findViewById(R.id.imageView);
Username = (TextView)itemView.findViewById(R.id.Username);
Team1 = (TextView)itemView.findViewById(R.id.Team1);
Team2 = (TextView)itemView.findViewById(R.id.Team2);
Sport = (TextView)itemView.findViewById(R.id.Sport);
Status = (TextView)itemView.findViewById(R.id.Status);
} }}
//Add This Library in app gradle
implementation 'com.android.volley:volley:1.1.0'
//Not Use
//Depricate compile 'com.mcxiaoke.volley:library:1.0.19'
public void CallApi(){
RequestQueue requestQueue = Volley.newRequestQueue(getBaseContext());
// Initialize a new JsonArrayRequest instance
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.POST,
mJSONURLStrings,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for(int i=0;i<response.length();i++){
JSONObject data = null;
try {
data = response.getJSONObject(i);
//My Data
String firstName = data.getString("firstname");
String lastName = data.getString("lastname");
String age = data.getString("age");
//Scoreboard_Item scoreboard_item = new Scoreboard_Item(student.getString("Username"), student.getString("Team1"), student.getString("Team2"), student.getString("Sport"), student.getString("Status"));
Scoreboard_Item scoreboard_item = new Scoreboard_Item(firstName, lastName, age, age, firstName);
arrayList.add(scoreboard_item);
layoutManager = new LinearLayoutManager(getBaseContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
adapter = new RecyclerAdapter(arrayList);
recyclerView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
// Do something when error occurred
}
}
);
// Add JsonArrayRequest to the RequestQueue
requestQueue.add(jsonArrayRequest);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.