Php RecyclerView未加载数据
我正在尝试用来自php的数据加载我的recyclerview。但是由于一些未知的原因,它没有加载任何数据。我已经在其他活动中使用了相同的代码,它可以很好地工作,但是对于这个活动,它只是保持空白。我已经测试了我的php文件,它运行良好 以下是我的活动代码:Php RecyclerView未加载数据,php,android,android-recyclerview,Php,Android,Android Recyclerview,我正在尝试用来自php的数据加载我的recyclerview。但是由于一些未知的原因,它没有加载任何数据。我已经在其他活动中使用了相同的代码,它可以很好地工作,但是对于这个活动,它只是保持空白。我已经测试了我的php文件,它运行良好 以下是我的活动代码: public class Match_scoring extends AppCompatActivity implements TeamAdapter.onItemClickListener { public static Strin
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);
}
}
下面是我的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);
?>
我曾多次遇到这个问题。适配器上的as NOTIFYDATASETCHETCHANGE不作为indended工作 只需在recyclerview适配器中创建一个简单的函数,并在webcall提供数据时调用一个函数
public void updateDataset(List<Model> updatedData){
yourListWhichInflateData=updatedData;
notifyDatasetChanged();
}
只要数据在活动中可用或已更新,就使用适配器实例调用上述函数。@mehul没有错误,我的回收器视图只是空白。“活动”已加载,但“回收服务”中没有项目检查我的更新答案。
public void updateDataset(List<Model> updatedData){
yourListWhichInflateData=updatedData;
notifyDatasetChanged();
}