2014-06-09 7 views
0

각각 하나의 목록 뷰가 포함 된 세 조각을 실행하는 Android 애플리케이션을 만듭니다. 현재 Parse.com에서 만든 테이블의 내용으로 listview 중 하나를 채우려고합니다. 나는이 튜토리얼을 따라 갔다 : http://www.androidbegin.com/tutorial/android-parse-com-listview-images-and-texts-tutorial/ 그리고 내 조각에서 작동하도록 적용했다. 문제는 내가 내 응용 프로그램을 실행할 때마다, 그것은 약 3 초 동안 데이터를로드 한 후 갑자기 충돌 날이 오류를 제공하지만입니다 :Java IO 예외 Parse.com의 데이터로 listview를 채울 때 깨진 파이프

ddmlib: Broken pipe 
java.io.IOException: Broken pipe 
    at sun.nio.ch.FileDispatcher.write0(Native Method) 
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29) 
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:69) 
    at sun.nio.ch.IOUtil.write(IOUtil.java:40) 
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:336) 
    at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213) 
    at com.android.ddmlib.Client.sendAndConsume(Client.java:642) 
    at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348) 
    at com.android.ddmlib.Client.requestAllocationStatus(Client.java:488) 
    at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:835) 
    at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:803) 
    at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:763) 
    at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:652) 
    at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44) 
    at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:580) 

나는이 오류가 발생하고 왜 전혀 생각이 없다. 다음은 내 listview를 채우려는 조각의 코드입니다. 나는 또한 목록보기에 대한 사용자 지정 어댑터를 사용하지만, 나는 잘 작동 확신하므로 내 다른 프로젝트에서 동일한 하나를 사용하고 있습니다. 데이터를 가져 오려면 새 RemoteDataTask()를 호출합니다. execute(); onCreateView에서. 이것은 내가 잘못되고 있다고 생각하는 곳입니다. 나는 또한 모든 내 테이블 이름이 내 구문 분석 데이터베이스에서 정확하다고 확신합니다.

public class fraternitiesFragment extends Fragment { 

    private SwipeRefreshLayout swipeLayoutFraternities; 
    private ListView fratList; 
    List<ParseObject> objList; 
    ProgressDialog mProgressDialog; 
    fraternitiesAdapter fratAdapter; 
    private List<Frat> fraternitiesList = null; 
    public fraternitiesFragment() 
    { 

    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

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

     View view = inflater.inflate(R.layout.frat_fragment, null); 


     // Retrieve the SwipeRefreshLayout and ListView instances 
     swipeLayoutFraternities = (SwipeRefreshLayout)view.findViewById(R.id.swipe_refresh_fraternities); 
     swipeLayoutFraternities.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       new Handler().postDelayed(new Runnable() { 
        @Override public void run() { 
         swipeLayoutFraternities.setRefreshing(false); 
        } 
       }, 3000); 
      } 
     }); 
     // Set the color scheme of the SwipeRefreshLayout by providing 4 color resource ids 
     swipeLayoutFraternities.setColorScheme(
       R.color.tech_blue, 
       R.color.tech_gold, 
       R.color.tech_blue, 
       R.color.tech_gold); 

     new RemoteDataTask().execute(); 
     return view; 

    } 


    private class RemoteDataTask extends AsyncTask<Void, Void, Void> { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      mProgressDialog = new ProgressDialog(getActivity()); 
      mProgressDialog.setTitle("Loading Fraternities"); 
      mProgressDialog.setMessage("Loading..."); 
      mProgressDialog.setIndeterminate(false); 
      mProgressDialog.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      fraternitiesList = new ArrayList<Frat>(); 
      try{ 

       ParseQuery<ParseObject> fraternitiesQuery = new ParseQuery<ParseObject>("Fraternities"); 
       Log.i("Query", " Created"); 
       fraternitiesQuery.orderByAscending("fratName"); 
       objList = fraternitiesQuery.find(); 
       for(ParseObject Fraternity : objList) 
       { 
        Frat fraternity = new Frat(); 
        fraternity.setFratName((String) Fraternity.get("fratName")); 
        fraternity.setVoteCount((Integer) Fraternity.get("VoteCount")); 
        fraternitiesList.add(fraternity); 
       } 

      } catch (ParseException e) 
      { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) 
     { 
      fratList = (ListView)getActivity().findViewById(R.id.frat_list); 
      fratAdapter = new fraternitiesAdapter(getActivity(), fraternitiesList); 
      Log.d("Adapter Created", "Created"); 
      mProgressDialog.dismiss(); 
      fratList.setAdapter(fratAdapter); 

     } 
    } 

} 

이 브로큰 파이프 오류로 이어지는 잘못된 점을 파악하는 데 정말로 도움이 필요합니다. 어떤 도움이나 의견을 보내 주시면 대단히 감사하겠습니다!

답변

0

구문 분석은 이미 비동기 방법이

ParseQuery<ParseObject> query = ParseQuery.getQuery("Fraternities"); 
     query.findInBackground(new FindCallback<ParseObject>() { 
      public void done(List<ParseObject> fraternityList, ParseException e) { 
       // Do your work here 
      } 
     }); 
+0

그래서이 코드 내 전체 RemoteDataTask 클래스를 교체하거나 클래스의 내부를 놓아야 시도를 가지고? 그리고이 메서드는 테이블에서 모든 데이터를 가져와 List fraternityList에 저장합니까? – Rbro112

+0

쿼리 부분을 제거하고이 부분으로 바꿀 수 있습니다. 그것이 작동하는 경우 전체 –

+0

대체하려고 실제로 실제로 내 ListView 어댑터에서 변수 형식의 오류를 수정하여 위의 코드로 작동하도록있어,하지만 불행히도 지금은 단지 테이블의 첫 번째 행을 반환합니다. 위의 메서드는 모든 행을 가져 옵니까? – Rbro112