Alles war in Ordnung, bis ich entschied, dass die oberste Zeile der Datenbank an der Spitze der Liste stehen würde.Ich möchte RecyclerView laden mehr Elemente beim Scrollen bis zum Ende. Wie kann ich das bekommen?
Im Moment ist mein einziges Problem, dass ich RecyclerView mehr Elemente laden möchte, wenn Sie bis zum Ende scrollen.
PHP
Wie schreibe ich den Code in diesem Abschnitt?
$sql= "SELECT * FROM movies_table ORDER BY id DESC";
dies complate Code
<?php
//Creating a connection
$con = mysqli_connect("--","---","----","-----");
/* change character set to utf8 */
$con->set_charset("utf8");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
/*Get the id of the last visible item in the RecyclerView from the request and store it in a variable. For the first request id will be zero.*/
$id = $_GET["id"];
$$sql= "SELECT * FROM movies_table ORDER BY id DESC";
$result = mysqli_query($con ,$sql);
while ($row = mysqli_fetch_assoc($result)) {
$array[] = $row;
}
header('Content-Type: text/html; charset=utf-8');
echo json_encode($array, JSON_UNESCAPED_UNICODE);
mysqli_free_result($result);
mysqli_close($con);
?>
.
. RecyclerView
.
. Wie schreibe ich den Code in diesem Abschnitt?
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
}
});
return view;
}
und dieser Abschnitt
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
dies complate Code
public class ThreeFragment extends Fragment{
private static final String TAG = ThreeFragment.class.getSimpleName();
private List<Movie> movies;
private RecyclerView recyclerView;
private GridLayoutManager gridLayout;
private MoviesAdapter adapter;
public ThreeFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_three, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
movies = new ArrayList<>();
getMoviesFromDB(0);
gridLayout = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(gridLayout);
adapter = new MoviesAdapter(getActivity(), movies);
recyclerView.setAdapter(adapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
}
});
return view;
}
public void fetchTimelineAsync(int page) {
// ...the data has come back, add new items to your adapter...
movies.clear();
movies = new ArrayList<>();
getMoviesFromDB(0);
gridLayout = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(gridLayout);
adapter = new MoviesAdapter(getActivity(), movies);
recyclerView.setAdapter(adapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (gridLayout.findLastCompletelyVisibleItemPosition() == movies.size() - 1) {
getMoviesFromDB(movies.get(movies.size() - 1).getId());
}
}
});
adapter.notifyDataSetChanged();
swipeContainer.setRefreshing(false);
}
}private void getMoviesFromDB(int id) {
AsyncTask<Integer, Void, Void> asyncTask = new AsyncTask<Integer, Void, Void>() {
ProgressDialog pdLoading = new ProgressDialog(getActivity());
@Override
protected void onPreExecute() {
super.onPreExecute();
//this method will be running on UI thread
pdLoading.setMessage("\tدر حال بارگذاری...");
pdLoading.setCancelable(false);
pdLoading.show();
}
@Override
protected Void doInBackground(Integer... movieIds) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://astaneapp.ir/wp-php/movies.php?id=" + movieIds[0])
.build();
try {
Response response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
Movie movie = new Movie(object.getInt("id"), object.getString("movie_name"),
object.getString("movie_image"), object.getString("movie_genre") , object.getString("movie_discription") , object.getString("movie_lat"), object.getString("movie_lon") , object.getString("movie_marker"));
ThreeFragment.this.movies.add(movie);
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
adapter.notifyDataSetChanged();
pdLoading.dismiss();
}
};
asyncTask.execute(id);
}
Check [diese] (https://github.com/codepath/android_guides/wiki/Endless-Scrolling-with-Ad apterViews-and-RecyclerView) Beispiel auf Github. – fida1989