package org.droidplanner.android.view.adapterViews;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.droidplanner.android.R;
import org.droidplanner.android.fragments.account.DroneshareAccountFragment;
import org.json.JSONArray;
import org.json.JSONObject;
/**
* Created by Fredia Huya-Kouadio on 1/23/15.
*/
public class UserDataAdapter extends RecyclerView.Adapter<UserDataAdapter.ViewHolder> {
private static final String TAG = UserDataAdapter.class.getSimpleName();
public static class ViewHolder extends RecyclerView.ViewHolder {
final TextView vehicleName;
final TextView vehicleType;
final TextView autopilot;
final TextView missionInfo;
public ViewHolder(View itemView, TextView vehicleName, TextView vehicleType, TextView autopilot,
TextView missionInfo) {
super(itemView);
this.vehicleName = vehicleName;
this.vehicleType = vehicleType;
this.autopilot = autopilot;
this.missionInfo = missionInfo;
}
}
private final Context context;
private JSONArray userVehicleData;
public UserDataAdapter(Context context) {
this.context = context;
userVehicleData = new JSONArray();
}
public void updateUserData(JSONObject userData){
JSONArray temp = userData == null ? null : userData.optJSONArray("vehicles");
if(temp == null)
return;
userVehicleData = temp;
notifyDataSetChanged();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_vehicle_info, parent,
false);
final TextView vehicleName = (TextView) view.findViewById(R.id.vehicle_name);
final TextView vehicleType = (TextView) view.findViewById(R.id.vehicle_type);
final TextView autopilot = (TextView) view.findViewById(R.id.vehicle_autopilot);
final TextView missionInfo = (TextView) view.findViewById(R.id.vehicle_mission_info);
return new ViewHolder(view, vehicleName, vehicleType, autopilot, missionInfo);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final JSONObject vehicleData = userVehicleData.optJSONObject(position);
if (vehicleData == null)
return;
final String vehicleType = vehicleData.optString("vehicleType", "");
holder.vehicleType.setText("Type: " + vehicleType);
String vehicleName = vehicleData.optString("name", "");
if(vehicleName.isEmpty())
vehicleName = vehicleType;
holder.vehicleName.setText(vehicleName);
final String vehicleId = vehicleData.optString("id", null);
if(vehicleId != null) {
holder.vehicleName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String vehicleInfoUrl = DroneshareAccountFragment.DRONESHARE_URL + "vehicle/" + vehicleId;
context.startActivity(new Intent(Intent.ACTION_VIEW)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setData(Uri.parse(vehicleInfoUrl)));
}
});
}
holder.autopilot.setText("Autopilot: " + vehicleData.optString("autopilotType", ""));
JSONArray missions = vehicleData.optJSONArray("missions");
int missionsCount = 0;
String missionDesc = " mission flown";
if(missions != null) {
missionsCount = missions.length();
if(missionsCount > 1)
missionDesc = " missions flown";
}
holder.missionInfo.setText(missionsCount + missionDesc);
}
@Override
public int getItemCount() {
return userVehicleData.length();
}
}