2014-02-18 5 views
0

이것은 내 첫 번째 앱입니다. 나는 웹 서비스로부터 데이터를 얻는리스트 뷰에 의해 채워진 단편을 가지고있다. 목록보기 항목을 클릭하고 새 활동을 열 수 있기를 원합니다. 각 항목에 대해 동일한 활동이 있지만 다른 변수를 전달하려고합니다. 나는 이것에 관해 많은 다른 포스트를 보았다. 그들 중 누구도 나를 위해 일하지 않습니다. 감사합니다.listView에서 활동 열기

public class TicketFragment extends Fragment { 
    ListView tv; 
    ProgressDialog mProgressDialog; 

    public TicketFragment(){} 
    private String TAG ="Vik"; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_ticket, container, false); 
     tv =(ListView)rootView.findViewById(R.id.listView1); 

     AsyncCallWS task = new AsyncCallWS(); 
     task.execute(); 

     return rootView; 
    } 

    private class AsyncCallWS extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 
      location(); 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      // Log.i(TAG, "onPostExecute"); 

     } 

     @Override 
     protected void onPreExecute() { 
      // Log.i(TAG, "onPreExecute"); 

     } 

     @Override 
     protected void onProgressUpdate(Void... values) { 
      //Log.i(TAG, "onProgressUpdate"); 
      mProgressDialog.setMessage("Loading locations....."); 
     } 

    }  

    public void location() { 
     String SOAP_ACTION = "http://example.com/getlocations"; 
     String METHOD_NAME = "getlocations"; 
     String NAMESPACE = "http://example.com/"; 
     String URL = "http://localhost/Example/Service.asmx"; 

     try { 
      SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); 
      //Request.addProperty("get locations", "3"); 

      SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
        SoapEnvelope.VER11); 
      soapEnvelope.dotNet = true; 
      soapEnvelope.setOutputSoapObject(Request); 

      HttpTransportSE transport= new HttpTransportSE(URL); 

      transport.call(SOAP_ACTION, soapEnvelope); 

      SoapObject response = (SoapObject)soapEnvelope.getResponse(); 

      System.out.println(response); 
      int intPropertyCount = response.getPropertyCount(); 
      String[] locations= new String[intPropertyCount]; 

      for (int i = 0; i < intPropertyCount; i++) {    
       locations[i] = response.getPropertyAsString(i).toString(); 
      } 

      final ArrayAdapter<String> adapter = 
      new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, locations); 

      getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        // This code will always run on the UI thread, therefore is safe to modify UI elements. 
        tv.setAdapter(adapter); 
       } 
      }); 

     } 
     catch(Exception ex) { 
      Log.e(TAG, "Error: " + ex.getMessage()); 
     } 

    } 
} 
+0

작동하지 않습니다 무엇입니까? – AlexBrand

+0

내가 가지고있는 것은 일하고있다. 목록보기를 클릭 가능하게 만들고 새 활동을 열 수있는 방법을 모르겠습니다. – user3267471

답변

0

당신은 당신의 목록보기에 클릭 리스너를 추가해야합니다 : 정확히

tv.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> adapter, View v, int position, long id) { 
     Intent intent = new Intent(getActivity(), DestinationActivity.class); 
     // add data to the intent... 
     startActivity(intent); 
} 
+0

AlexBrand 덕분에 완벽하게 작동합니다. – user3267471