2016-09-18 3 views
0

이 코드를 사용하여 나머지 서비스에서 얻으려면 loopj를 사용하는 모든 직원의 목록을 받았습니다.loopj에서 get request 요청 URL로 값을 전달하는 방법

public class MainActivity extends ActionBarActivity { 
private ListView employeeList; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
getEmployees(); 
} 
    private void getEmployees() { 
     List<Header> headers = new ArrayList<Header>(); 
     headers.add(new BasicHeader("Accept", "application/json")); 

     EmployeeRestClient.get(MainActivity.this, "RestExample/employee", 
     headers.toArray(new Header[headers.size()]),null, 
      new JsonHttpResponseHandler() { 
     @Override 
     public void onSuccess(int statusCode, Header[] headers, JSONArray response) { 
     ArrayList<Employee> employeeArray = new ArrayList<Employee>(); 
     EmployeeAdapter employeeAdapter = new EmployeeAdapter(MainActivity.this, employeeArray); 

      for (int i = 0; i < response.length(); i++) { 
      try { 
        employeeAdapter.add(new Employee(response.getJSONObject(i))); 
       } catch (JSONException e) { 
       e.printStackTrace(); 
        } 
       } 

      employeeList = (ListView) findViewById(R.id.list_employees); 
      employeeList.setAdapter(employeeAdapter); 
      } 
     }); 
    } 

나는 select * from employees where age = ? 그래서 내가 나이 값이 ListView (employeeList), 데이터 소스를 초기화 RestExample/employee/{age}

답변

1

같은 URL에 전달하는 얻는 방법 getEmployees(Long age) 방법 (과 직원의 목록을 얻으려면 employeeArray) 및 어댑터 (employeeAdapter)를 onSuccess 방법으로 수행하는 대신 onCreate에 저장하는 것이 좋습니다.

employeeList = (ListView) findViewById(R.id.list_employees); 
employeeArray = new ArrayList<Employee>(); 
employeeAdapter = new EmployeeAdapter(MainActivity.this, employeeArray); 
employeeList.setAdapter(employeeAdapter); 

귀하의 getEmployees 방법

,

private void getEmployees(Long age) { 
    List<Header> headers = new ArrayList<Header>(); 
    headers.add(new BasicHeader("Accept", "application/json")); 

    EmployeeRestClient.get(MainActivity.this, "RestExample/employee/" + age, 
     headers.toArray(new Header[headers.size()]), null, 
     new JsonHttpResponseHandler() { 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, JSONArray response) { 
      for (int i = 0; i < response.length(); i++) { 
       try { 
        employeeArray.add(new Employee(response.getJSONObject(i))); 
       } catch (JSONException e) { 
       e.printStackTrace(); 
       } 
      } 
      // notify the adapter that the data has changed 
      employeeAdapter.notifyDataSetChanged(); 
     } 

    }); 
} 
+0

@neeraj 난에 "+ 세"값을 전달해야 해달라고? 예를 들어 age = 25이므로 25 세의 모든 직원을 나열합니다. 회 전자에서는 onItemSelected를 사용하여 나이 값을 가져옵니다. onItemSelected에서 – user3785322

+0

나는 선택한 항목의 나이 값을 가져오고 값을 url에 전달하여 원하는 결과를 얻습니다. 나는 여기에 특정 연령의 직원을리스트하고 싶다. 휴식 서비스에서 내 url은 examplerestservice/employee/age (나이)에 25를주고 결과를 얻습니다. 그게 내가 webservice를 소비하고 목록을 가져올 수있는 클라이언트 URL에 가치를 전달해야만합니다. – user3785322

+0

그건 정확히 무엇입니까 않습니다. –