RecyclerView не загружает данные

Я пытаюсь загрузить свой просмотрщик данных с php. Но по неизвестной причине он не загружает никаких данных. Я использовал этот же код для других действий, он отлично работает для этого, но для этого действия он остается пустым. Я проверил мой PHP-файл, он работает нормально.

Вот мой код для активности:

public class Match_scoring extends AppCompatActivity implements TeamAdapter.onItemClickListener {

public static String URL_data;
public static String p_id;
public static String p_name;

TeamAdapter adapter;
EditText editText;
List<TeamItems> list_items;
RecyclerView recyclerView;
Button subs;

TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_match_scoring);

URL_data = "http://prasaurus.com/trial_db_php/tbl_show_201_0_data.php";

tv = (TextView)findViewById(R.id.url);
tv.setText(URL_data);

editText = (EditText)findViewById(R.id.mSearch_match);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Override
public void afterTextChanged(Editable s) {
filter(s.toString());
}
});

recyclerView = (RecyclerView)findViewById(R.id.total_players_recyclerView);

recyclerView.setHasFixedSize(true);

recyclerView.setLayoutManager(new LinearLayoutManager(this));

list_items = new ArrayList<>();

adapter = new TeamAdapter(list_items,getApplicationContext());

recyclerView.setAdapter(adapter);

adapter.setOnItemClickListener(Match_scoring.this);

loadRecyclerViewData();

}

private void loadRecyclerViewData() {

StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_data, new Response.Listener<String>() {
@Override
public void onResponse(String response) {

try {
JSONObject jsonObject = new JSONObject(response);
int success = jsonObject.getInt("success");
if (success == 1) {
JSONArray jsonArray = jsonObject.getJSONArray("Data");

for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject_current = jsonArray.getJSONObject(i);
TeamItems teamItems = new TeamItems(
jsonObject_current.getString("player_id"),
jsonObject_current.getString("player_name"),
jsonObject_current.getString("player_dob"),
jsonObject_current.getString("position"),
jsonObject_current.getString("team_id")
);
list_items.add(teamItems);
} adapter.notifyDataSetChanged();
} else {
Toast.makeText(getApplicationContext(), "Please try again later.", Toast.LENGTH_LONG).show();
}

} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG);
}
});

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

}

private void filter(String text){
ArrayList<TeamItems> filteredList = new ArrayList<>();

for (TeamItems item : list_items){
if(item.getPlayer_name().toLowerCase().contains(text.toLowerCase())){
filteredList.add(item);
}
}
adapter.filterList(filteredList);
}

@Override
public void onItemClick(int position) {
TeamItems clickedItem = list_items.get(position);

Intent details = new Intent(Match_scoring.this,ScoringDetails.class);
p_id = clickedItem.getPlayer_id();
p_name = clickedItem.getPlayer_name();

startActivity(details);


}
}

Вот макет XML файл для того же:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".Match_scoring">

<RelativeLayout
android:layout_width="match_parent"android:layout_height="wrap_content">

<EditText
android:id="@+id/mSearch_match"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginEnd="8dp"android:layout_marginStart="8dp"android:layout_marginTop="24dp"android:hint="Search Player"
/>

<android.support.v7.widget.RecyclerView
android:id="@+id/total_players_recyclerView"android:layout_width="match_parent"android:layout_height="200dp"android:layout_marginStart="8dp"android:layout_marginTop="10dp"android:layout_marginEnd="8dp"android:layout_marginVertical="8dp"android:layout_below="@id/mSearch_match"/>

<Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/substitute"android:text="SUBS"android:layout_centerHorizontal="true"android:layout_below="@id/total_players_recyclerView"/>

<TextView
android:layout_width="wrap_content"android:layout_height="wrap_content" android:layout_below="@id/substitute"android:layout_centerHorizontal="true"android:id="@+id/url"/>

</RelativeLayout>

</android.support.constraint.ConstraintLayout>

А вот мой скрипт php:

<?php
$servername = "prasaurus.com";
$username = "prasauru_fand";
$password = "[DB-PASSWORD]";
$dbname = "prasauru_trial_db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$pair_id=$_POST['pair_id'];
$fixture=$_POST['fixture'];

$response = array();

$query = "select * from tbl_201_0_match_details";



$result = mysqli_query($conn, $query);

if(mysqli_num_rows($result) > 0){
$response['success'] = 1;
$Data = array();
while ($row = mysqli_fetch_assoc($result)) {
array_push($Data , $row);
}
$response['Data'] = $Data;
}
else {
$response['success'] = 0;
$response['message'] = 'No data';
}

echo json_encode($response);
mysqli_close($conn);


?>

0

Решение

Я сталкивался с этой проблемой очень много раз. как notifyDatasetChanged() на адаптере не работает с отступом.

Просто создайте простую функцию в адаптереайзера и вызывайте функцию, когда данные доступны из webcall

public void updateDataset(List<Model> updatedData){
yourListWhichInflateData=updatedData;
notifyDatasetChanged();
}

Вызывайте вышеуказанную функцию, используя экземпляр адаптера, когда данные доступны в действии или обновлены.

1

Другие решения

Других решений пока нет …