2017-10-24 8 views
0

私はここにhttps://freebieslearning.net/android-2/android-find-nearby-user/のソースコードを持っています。このソースコードは、登録された人物の位置とユーザーと登録ユーザーの距離をフェッチして表示します。どのようにデータに画像を追加するのかと思っていますので、データを取り込むときに画像もその中に含まれています。私はここにコードを貼り付けてみましょうMySQLサーバーから既存のAndroidコードにフェッチイメージを追加する方法

<?PHP 
include_once("Connection.php"); 
$latitude = $_GET['latitude']; 
$longitude = $_GET['longitude']; 

$query = "select * from(SELECT name,latitude,longitude,round((((acos(sin((".$latitude."*pi()/180)) * 
sin((`latitude`*pi()/180))+cos((".$latitude."*pi()/180)) *  cos((`latitude`*pi()/180)) * 
cos(((".$longitude."- `longitude`)*pi()/180))))*180/pi())*60*1.1515*1.609344),1) as distance 
FROM location) as temp order by distance"; 

$result = mysqli_query($conn, $query); 
while (($row = mysqli_fetch_assoc($result)) == true) { 
    $data[] = $row; 
} 
echo json_encode($data); 
?> 

MyData.java:

package com.example.sumit.nearbyapp; 

public class MyData { 
    String name; 
    double latitude, longitude, distance; 

    public MyData(String name, double latitude, double longitude, double distance) { 
     this.name = name; 
     this.distance = distance; 
     this.latitude = latitude; 
     this.longitude = longitude; 
    } 

    public double getDistance() { 
     return distance; 
    } 

    public void setDistance(double distance) { 
     this.distance = distance; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public double getLatitude() { 
     return latitude; 
    } 

    public void setLatitude(double latitude) { 
     this.latitude = latitude; 
    } 

    public double getLongitude() { 
     return longitude; 
    } 

    public void setLongitude(double longitude) { 
     this.longitude = longitude; 
    } 
} 

package com.example.sumit.nearbyapp; 

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { 
    private Context context; 
    private List<MyData> my_data; 

    public CustomAdapter(Context context, List<MyData> my_data) { 
     this.context = context; 
     this.my_data = my_data; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false); 
     return new ViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, final int position) { 
     holder.name.setText(my_data.get(position).getName().toString()); 
     holder.distance.setText(Double.toString(my_data.get(position).getDistance())); 
     holder.imageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%s,%s (%s)", 
       Double.toString(my_data.get(position).getLatitude()), 
      Double.toString(my_data.get(position).getLongitude()),my_data.get(position).getName()); 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); 
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); 
       context.startActivity(intent); 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return my_data.size(); 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder { 
     public ImageView imageView; 
     public TextView distance; 
     public TextView name; 

     public ViewHolder(View itemView) { 
      super(itemView); 

      imageView = (ImageView) itemView.findViewById(R.id.map); 
      distance = (TextView)itemView.findViewById(R.id.distance); 
      name = (TextView)itemView.findViewById(R.id.name); 
     } 
    } 
} 

package com.example.sumit.nearbyapp; 

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) { 
      // getApplicationContext() is key, it keeps you from leaking the 
      // Activity or BroadcastReceiver if someone passes one in. 
      mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); 
     } 
     return mRequestQueue; 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     getRequestQueue().add(req); 
    } 

    public ImageLoader getImageLoader() { 
     return mImageLoader; 
    } 
} 

package com.example.sumit.nearbyapp; 

public class MainActivity extends AppCompatActivity { 
    String latitude, longitude; 
    private RecyclerView recyclerView; 
    private LinearLayoutManager linearLayoutManager; 
    private CustomAdapter adapter; 
    private List<MyData> data_list; 
    private ProgressDialog pd; 

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

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     GPSTracker gps = new GPSTracker(this); 
     pd = new ProgressDialog(MainActivity.this); 
     pd.setMessage("Loading . . . "); 

     if (gps.canGetLocation()) { 
      latitude = String.valueOf(gps.getLatitude()); 
      longitude = String.valueOf(gps.getLongitude()); 

      data_list = new ArrayList<>(); 
      load_data_from_server(); 
      linearLayoutManager = new LinearLayoutManager(this); 
      recyclerView.setLayoutManager(linearLayoutManager); 

      adapter = new CustomAdapter(this,data_list); 
      recyclerView.setAdapter(adapter); 
     } else { 
      gps.showSettingsAlert(); 
     } 
    } 

    private void load_data_from_server() { 
     String url = "http://vga.ramstertech.com/loc/location.php?latitude="+latitude+"&longitude="+longitude+""; 
     pd.show(); 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       try { 
        JSONArray jsonarray = new JSONArray(response); 
        for(int i = 0; i < jsonarray.length(); i++) { 
         JSONObject jsonobject = jsonarray.getJSONObject(i); 
         String name = jsonobject.getString("name"); 
         Double latitude = jsonobject.getDouble("latitude"); 
         Double longitude = jsonobject.getDouble("longitude"); 
         Double distance = jsonobject.getDouble("distance"); 

         MyData data = new MyData(name.toString(), latitude, longitude, distance); 

         data_list.add(data); 
         adapter.notifyDataSetChanged(); 
         pd.hide(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
        pd.hide(); 
       } 
      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       if (error != null) { 
        Toast.makeText(getApplicationContext(), "Something went wrong.", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 

     MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest); 
    } 
} 
+0

の作品を願っ誰かが私を助けることができます –

答えて

0

あなたが最初のデータベースのカラム名「画像」とフォルダ「画像」または「アップロード」を作成することによって、それに画像を追加することができますcustomadapter下

package com.example.sumit.nearbyapp; 


public class MyData { 
String name, image; 
double latitude,longitude,distance; 

public MyData(String image, String name, double latitude,double longitude,double distance){ 
    this.name = name; 
    this.image = image; 
    this.distance = distance; 
    this.latitude = latitude; 
    this.longitude = longitude; 
} 

public String getImge() { 
    return image; 
} 

public void setImge(String image) { 
    this.image = image; 
} 

public double getDistance() { 
    return distance; 
} 

public void setDistance(double distance) { 
    this.distance = distance; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public double getLatitude() { 
    return latitude; 
} 

public void setLatitude(double latitude) { 
    this.latitude = latitude; 
} 

public double getLongitude() { 
    return longitude; 
} 

public void setLongitude(double longitude) { 
    this.longitude = longitude; 
} 

}

package com.example.sumit.nearbyapp; 


public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { 

private Context context; 
private List<MyData> my_data; 

public CustomAdapter(Context context, List<MyData> my_data) { 
    this.context = context; 
    this.my_data = my_data; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false); 

    return new ViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, final int position) { 



    holder.name.setText(my_data.get(position).getName().toString()); 
    holder.distance.setText(Double.toString(my_data.get(position).getDistance())); 
    //holder.image.setText(my_data.get(position).getImge().toString()); 
    String fullUrl = "http://192.168.0.199/uploads/" + "product/" + "iPhone 6 Black" + ".jpg"; 
    Glide 
      .with(context) 
      .load(fullUrl) 
      .centerCrop().diskCacheStrategy(DiskCacheStrategy.ALL) 
      .crossFade() 
      .into(holder.image); 

    //Glide.with(context).load(my_data.get(position).getImge()).fitCenter().diskCacheStrategy(DiskCacheStrategy.ALL).into(holder.image); 


    holder.imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%s,%s (%s)", 
      Double.toString(my_data.get(position).getLatitude()), Double.toString(my_data.get(position).getLongitude()),my_data.get(position).getName()); 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); 
      context.startActivity(intent); 


     } 
    }); 

} 

@Override 
public int getItemCount() { 
    return my_data.size(); 
} 

public class ViewHolder extends RecyclerView.ViewHolder{ 


    public ImageView imageView; 
    public TextView distance; 
    public TextView name; 
    public ImageView image; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     imageView = (ImageView) itemView.findViewById(R.id.map); 
     image = (ImageView) itemView.findViewById(R.id.imageDownloaded); 
     distance=(TextView)itemView.findViewById(R.id.distance); 
     name=(TextView)itemView.findViewById(R.id.name); 
    } 
} 

}

<?PHP 
//include_once("connect_database.php"); 
include_once("Connection.php"); 
$latitude=$_GET['latitude']; 
$longitude=$_GET['longitude']; 

$query = "select * from(SELECT  name,image,latitude,longitude,round((((acos(sin((".$latitude."*pi()/180)) * 
sin((`latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * 
cos(((".$longitude."- `longitude`)*pi()/180))))*180/pi())*60*1.1515*1.609344),1) as distance 
FROM location) as temp order by distance"; 

$result = mysqli_query($conn, $query); 
while(($row = mysqli_fetch_assoc($result)) == true){ 
$data[]=$row; 
} 
echo json_encode($data); 
?> 

それは

関連する問題