J'essaie de résoudre cette erreur mais je ne peux pas.utiliser Jsonreader setLenient (true) pour accepter l'erreur JSON malformée
code d'activité principale
public class Reservation_main extends AppCompatActivity {
final String TAG = "ReservationMainActivity";
public static final String url = "http://10.0.2.2:81/PhpProject1/room.php";
RecyclerView recycle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reserve_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
recycle = (RecyclerView)findViewById(R.id.recycle);
recycle.setHasFixedSize(true);
LinearLayoutManager manager = new LinearLayoutManager(this);
recycle.setLayoutManager(manager);
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response);
ArrayList<Reservation_room_list> roomList = new JsonConverter<Reservation_room_list>()
.toArrayList(response, Reservation_room_list.class);
Reservation_room_adapter adapter = new Reservation_room_adapter(getApplicationContext(), roomList);
recycle.setAdapter(adapter);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error != null){
Log.d(TAG, error.toString());
Toast.makeText(getApplicationContext(), "Something went wrong.", Toast.LENGTH_LONG).show();
}
}
}
);
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
}
}
adaptateur Chambre
public class Reservation_room_adapter extends
RecyclerView.Adapter<Reservation_room_adapter.RoomViewHolder> {
private Context context;
private ArrayList<Reservation_room_list> room;
public Reservation_room_adapter(Context context, ArrayList<Reservation_room_list> room){
this.context = context;
this.room = room;
}
@Override
public RoomViewHolder onCreateViewHolder (ViewGroup parent, int type){
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.from(parent.getContext())
.inflate(R.layout.activity_reserve_layout, parent, false);
RoomViewHolder roomViewHolder = new RoomViewHolder(view);
return roomViewHolder;
}
@Override
public void onBindViewHolder (RoomViewHolder holder, int position){
Reservation_room_list rooms = room.get(position);
holder.roomNo.setText(rooms.roomid);
holder.price.setText("" + rooms.price);
holder.roomDescription.setText(rooms.type);
String fullUrl = "http://10.0.2.2:81/PhpProject1/" + rooms.image;
Picasso.with(context)
.load(fullUrl)
.placeholder(R.drawable.bed_room_web)
.error(android.R.drawable.stat_notify_error)
.into(holder.roomImage);
}
@Override
public int getItemCount(){
if (room != null){
return room.size();
}
return 0;
}
public static class RoomViewHolder extends RecyclerView.ViewHolder{
public CardView info;
public TextView roomNo;
public TextView roomDescription;
public TextView price;
public ImageView roomImage;
public RoomViewHolder(View roomView){
super(roomView);
info = (CardView) roomView.findViewById(R.id.view);
roomNo = (TextView) roomView.findViewById(R.id.room);
roomDescription = (TextView) roomView.findViewById(R.id.details);
price = (TextView) roomView.findViewById(R.id.price);
roomImage = (ImageView) roomView.findViewById(R.id.imageView2);
}
}
}
Ce code est le room_list
public class Reservation_room_list implements Serializable{
public String type;
public String image;
public String status;
public int roomid;
public int capacity;
public double price;
}
code php
<?php
error_reporting(0);
require 'index.php';
$query = "SELECT * FROM `room` WHERE Status = 'available' ORDER BY
Room_number desc";
$response["sucsess"] = false;
$result = mysqli_query($conn, $query);
while($row = mysqli_fetch_assoc($result)){
$response["success"] = true;
$data[] = $row;
}
echo json_encode($data);
?>
code MySingleton
public class MySingleton {
private static MySingleton mInstance;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private static Context mCtx;
private MySingleton(Context context) {
mCtx = context;
mRequestQueue = getRequestQueue();
mImageLoader = new ImageLoader(mRequestQueue,
new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap>
cache = new LruCache<String, Bitmap>(20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static synchronized MySingleton getInstance(Context context) {
if (mInstance == null) {
mInstance = new MySingleton(context);
}
return mInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue =
Volley.newRequestQueue(mCtx.getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
}
erreur que je reçois quand exécuter
09-03 07: 45: 34,436 6020-6020/fyp.hotelreservationsystemver2 E/RecyclerView: Aucun adaptateur attaché; Sauter la disposition 09-03 07: 45: 34.465 6020-6020/fyp.hotelreservationsystemver2 D/ReservationMainActivity: [{"Room_number": "1", "Type": "luxe", "Capacité": "10", "Statut ":" disponible "," Prix ":" 1000 "," Image ":" img/hotel-chambre-decor-hotel-style-chambres.jpg "}]/* * Pour modifier cet en-tête de licence, choisissez En-têtes de licence dans les propriétés du projet. * Pour modifier ce fichier modèle, choisissez Outils | Modèles * et ouvrez le modèle dans l'éditeur. */ 09-03 07: 45: 34.504 6020-6020/fyp.hotelreservationsystemver2 D/AndroidRuntime: Arrêt de la machine virtuelle 09-03 07: 45: 34.504 6020-6020/fyp.hotelreservationsystemver2 E/AndroidRuntime: FATAL EXCEPTION: principale Processus: fyp.hotelreservationsystemver2, PID: 6020 com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: utilisez JsonReader.setLenient (true) pour accepter un JSON mal formé à la ligne 2 colonne 151 at com.google .gson.Gson.assertFullConsumption (Gson.java:779) at com.google.gson.Gson.fromJson (Gson.java:769) à l'adresse com.google.gson.Gson.fromJson (Gson.java:717) à com.kosalgeek.android.json.JsonConverter.toArrayList (JsonConverter.java:42) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java:53) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java : 44) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:60) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:30) à com.android.volley .ExecutorDelivery $ ResponseDeliveryRunnable.run (ExecutorDelivery.java:99) chez android.os.Handler.handleCallback (Handler.java:751) at android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6077) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 756) causés par: com.google.gson.stream.MalformedJsonException: Utilisation JsonReader.setLenient (true) pour accepter malformés JSON à la colonne 2 ligne à 151 com.google.gson.stream.JsonReader.syntaxError (JsonReader. java: 1505) à com.google.gson.stream.JsonReader.checkLenient (JsonReader.java:1386) à com.google.gson.stream.JsonReader.nextNonWhitespace (JsonReader.java:1336) à com.google. gson.stream.JsonReader.doPeek (JsonReader.java:527) à com.google.gson.stream.JsonReader.peek (JsonReader.java:414) à com.google.gson.Gson.assertFullConsumption (Gson.java: 775) à com.google.gson.Gso n.fromJson (Gson.java:769) à com.google.gson.Gson.fromJson (Gson.java:717) à com.kosalgeek.android.json.JsonConverter.toArrayList (JsonConverter.java:42) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java:53) à fyp.hotelreservationsystemver2.Reservation_main $ 1.onResponse (Reservation_main.java:44) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java: 60) à com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:30) à com.android.volley.ExecutorDelivery $ ResponseDeliveryRunnable.run (ExecutorDelivery.java:99) à android.os.Handler.handleCallback (Handler.java:751) à android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6077) à java.lang.reflect.Method.invoke (native Method) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:756)
Le gson et JSONconverter I utilisation:
[1]: https://drive.google.com/open?id=0B9c7Ta0Lo2OVVkkyU1RJVzQ5bTQ
votre chaîne de publier JSON –
je suggère à 1) ouvrir le navigateur Web et allez à la page room.php 2) Réglage du taux de réponse que la TextView et juste regarder. Si cela ressemble à JSON, analyser alors il –