2017-12-31 170 views
1

この機能では、カスタムリストビューに記載されている項目をActivity1.javaからphpに戻して、その特定の項目に関する詳細情報(Picasaライブラリ経由の画像を含む)を取得する必要があります。 mysqlの別のアクティビティでは、PHPファイルが正しいかどうか、どうすれば開けばいいのか分かります。Activity2.javalistviewのtextviewをPHPに戻す方法

Activity1.java

public class Activity1 extends AppCompatActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ListView lv= (ListView) findViewById(R.id.listview); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) { 
      String name =((TextView) findViewById(R.id.itemname)).getText().toString(); 
      Intent intent = new Intent(Activity1.this, Activity2.class); 
      intent.putExtra("NAME", name); 
      startActivity(intent); 
     } 
    }); 
} 

}

Detail.php

<?php 
include 'dbConnect.php'; 
mysqli_set_charset($conn, 'utf8'); 
$NAME = $_POST['NAME']; 

$sql = "SELECT * FROM items WHERE item_name = '$NAME'" ; 
result = $conn->query($sql); 

if ($result->num_rows >0) { 
    while($row[] = $result->fetch_assoc()) { 
     $tem = $row; 
     $json = json_encode($tem); 
    } 
} else { 
    echo "No Results Found."; 
} 
echo $json; 
$conn->close(); 
?> 
+0

自分自身をロールバックする以外にもできるライブラリがあります。いくつかのボレーの名前を、okhttp ... – frz3993

+0

可能であればピカソの図書館? – DreamCrusher

答えて

0

私は正確に何である、REST要求を行うためRetrofit 2 libraryを使用するためにあなたをお勧めします必要。

まずあなたのレトロフィットサービスを記述するためのインタフェースを作成する必要がありますあなたのbuild.gradleファイルに

dependencies { 
    // Retrofit & OkHttp 
    compile 'com.squareup.retrofit2:retrofit:2.3.0' 

    // JSON Converter 
    compile 'com.squareup.retrofit2:converter-gson:2.3.0' 
} 

を次の依存関係を追加します。あなたのケースでは、それは( パスの先頭に/入れいけない)、このようになります :あなたはあなたの項目を記述したクラスを作成する必要があり

public interface PhpService { 
    @FormUrlEncoded 
    @POST("path/to/your/web/resource") 
    Call<Item> searchForItem(@Field("NAME") String itemName); 
} 

(あなたはと、そのクラスを自分で記述する必要があります

class Item { 
    @SerializedName("name") 
    String name; 

    @SerializedName("url") 
    String imageUrl; 
} 

は今、あなたはそう(ウェブサイトでbaseUrlにに取って代わるように)実際のサービスを作成する必要があります:私は)実際のフィールドを知らない

Retrofit retrofit = new Retrofit.Builder() 
.baseUrl("https://yourwebsite.com/") 
.build(); 

PhpService service = retrofit.create(PhpService.class); 

さて、あなたは、PHPのWebサーバにリクエストすることができます作成​​されたサービス使用:

Call<Item> item = service.searchForItem("yourItemName"); 

call.enqueue(new Callback<Item>() { 
    @Override 
    public void onResponse(Call<Item> call, Response<Item> response) { 
     if (response.isSuccessful()) { 
      Itemitem = response.body(); 
      // todo do stuff with your item 
     } 
    } 

    @Override 
    public void onFailure(Call<Item> call, Throwable t) { 
     // the network call was a failure 
     // TODO: handle error 
    } 
}); 

PHPスクリプトからアイテムを取得するために、すべてでなければなりません。

さらに詳しい情報が必要な場合は、tutorial by futurestud.ioをご覧ください。

+0

baseURLについてはサーバー名ですか? – DreamCrusher

+0

あなたのPHPスクリプトをホストしているサーバーのアドレスです。 'https:// www.google.com /'のようなドメインでも、 'http:// 172.217.20.174 /'のようなIPアドレスでもかまいません。ローカルでスクリプトを実行している場合は、使用しているポートがhttpsで80または443でない場合は、http:// localhost /またはhttp:// localgost: / – Mateusz

関連する問題