2016-01-08 3 views
-4

У меня есть php-файл, когда пользователь отправил существующий ticknumber php будет echo JSON код для одного массива из этого был опубликован, я связал его с Activity, который будет делать то же самое с файлом php, но когда я нажмите на кнопку ничего не отображается в Listview !!Получите ответ JSON при запросе сообщения volley

<?php 


    if ($_SERVER ['REQUEST_METHOD']=='POST') { 

     $ticketnumber = $_POST['ticketnumber']; 

     require_once('config.php'); 

    $con->set_charset('utf8'); 

     $sql = " SELECT * FROM contact WHERE ticketnumber = '$ticketnumber' "; 

     $res = mysqli_query($con, $sql); 

     $result = array(); 

     while($get = mysqli_fetch_array($res)) 
     { 
      array_push($result,array('ticketnumber' =>$get[5], 'subject' =>$get[4],'response' =>$get[6])); 
     } 
     if(!empty($result)){ 
      echo json_encode(array("responseticket"=>$result)); 
     } else { 
      echo " error"; 
     } 

} 
?> 

SupportActivity.java

public class supportActivity extends AppCompatActivity implements View.OnClickListener{ 

private EditText ticketsupport; 
private Button button; 
private List<supportContent> con = new ArrayList<supportContent>(); 
private ListView supportlist; 
private supportAdapter adapter; 
private String ticketinput; 
private String url = "http://10.0.3.2/aaa/getticket.php"; 
private RequestQueue requestQueue1; 
int i ; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_support); 

    ticketsupport = (EditText)findViewById(R.id.insertticketnumber); 
    supportlist = (ListView)findViewById(R.id.supportlistview); 
    adapter = new supportAdapter(this, con); 
    supportlist.setAdapter(adapter); 
    button = (Button)findViewById(R.id.buttonsupprt); 

    button.setOnClickListener(this); 


} 

private void inquiry() { 

     ticketinput = ticketsupport.getText().toString().trim(); 

    StringRequest stringRequest1 = new StringRequest(Request.Method.POST, url, 
      new Response.Listener<String>() { 

       @Override 
       public void onResponse(String response) { 
        if (response.trim().equals("error")) { 

         Toast.makeText(supportActivity.this, "please check the number", Toast.LENGTH_SHORT).show(); 
        } else { 


         try { 
          JSONObject ticket ; 
          JSONArray jsonArray = new JSONArray("responseticket"); 
          ticket = jsonArray.getJSONObject(Integer.parseInt(response)); 
          supportContent support = new supportContent(); 

          support.setTicketnumber(ticket.getString("ticketnumber")); 
          support.setSubject(ticket.getString("subject")); 
          support.setResponse(ticket.getString("response")); 

          con.add(support); 


         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
         adapter.notifyDataSetChanged(); 

        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(supportActivity.this, "something wrong" , Toast.LENGTH_SHORT).show(); 
     } 
    }) { 

     @Override 
    protected Map<String,String> getParams() throws AuthFailureError{ 
      Map<String,String> map = new HashMap<String,String>(); 
      map.put("ticknumber", ticketinput); 
      return map; 
     } 
    }; 

    requestQueue1 = Volley.newRequestQueue(getApplicationContext()); 
    requestQueue1.add(stringRequest1); 

} 

@Override 
public void onDestroy(){ 
    super.onDestroy(); 
} 


@Override 
    public void onClick(View view){ 
     inquiry(); 
} 
} 

SupportAdapter.java

public class supportAdapter extends ArrayAdapter<supportContent> { 

private Context context; 
private List<supportContent> contents; 

public supportAdapter(Context context, List<supportContent> con){ 
    super(context, R.layout.supportcontent, con); 
    this.contents = con; 
} 

@Override 
public int getCount(){ 
    return contents.size(); 
} 

public View getView(int position, View convertview, ViewGroup parent){ 

    LayoutInflater inflater = LayoutInflater.from(getContext()); 

    View supcon = inflater.inflate(R.layout.supportcontent, null); 

    TextView ticketnumber = (TextView)supcon.findViewById(R.id.ticketnumber); 
    ticketnumber.setText(contents.get(position).getTicketnumber()); 
    TextView supportsubject = (TextView)supcon.findViewById(R.id.supportsubject); 
    supportsubject.setText(contents.get(position).getSubject()); 
    TextView response = (TextView)supcon.findViewById(R.id.response); 
    response.setText(contents.get(position).getResponse()); 

    return supcon; 
} 
} 
+0

и может опубликовать свой ответ в формате JSON? – kevz

+0

{"responseticket": [{"ticketnumber": "285", "subject": "\ u0627 \ u062d \ u0628 \ u0643 \ u0645 \ u0643 \ u0644 \ u0643 \ u0645", "response": "vcvc"}] } – ahmed01

+0

Вы исправились.? –

ответ

0

Разбираем ваш ответ, как показано ниже -

JSONObject jObj = new JSONObject(response); 
JSONArray jResponseTicketarray = jObj.getJSONArray("responseticket"); 

JSONObject jTicket = jResponseTicketarray.getJSONObject(0); 
String Ticketnumber = jTicket.getString("ticketnumber"); 
String Subject = jTicket.getString("subject"); 
String Response = jTicket.getString("response"); 
  • ответ - возвращенный ответ Json в onResponse() mth.

  • jResponseTicketarray.getJSONObject (0); - здесь '0' - это первый элемент в ResponseTicketArray. Если der - это множественный объект, вы можете захотеть итерации цикла и извлечь необходимые поля.

Изменить ниже код тоже -

supportContent support = new supportContent(); 

support.setTicketnumber(ticket.getString("ticketnumber")); 
support.setSubject(ticket.getString("subject")); 
support.setResponse(ticket.getString("response")); 

к ниже -

supportContent support = new supportContent(); 

support.setTicketnumber(TicketNumber); 
support.setSubject(Subject); 
support.setResponse(Response); 
+0

@ ahmed01: Извините за поздний ответ, но я могу проверить свой ответ :) – kevz

+0

Спасибо, не могу ли я заменить его с помощью внутри внутри? как насчет Списка? – ahmed01

+0

@ ahmed01: Обязательно замените его внутри блока try только кодом разбора JSON. Я также отредактирую свое изменение ответа, и List будет хорошо – kevz

Смежные вопросы