2016-06-02 2 views
0

Android에 들어가기 시작했습니다. 그저 절대 초보자입니다. 따라서 내 맞춤 GridAdapter 및 Parse SDK 문제를 해결할 수 있기를 바랍니다. Logcat은 그렇지 않습니다. 어떤 오류라도 보여 주지만 장치가 데이터를 표시하지 않고 계속 충돌합니다. 여기 안드로이드 - Parse Server SDK가있는 GridAdapter 문제

내 코드 [EDITED]입니다 : 내가 event_cell.xml 만든

public class Home extends AppCompatActivity { 

/* Views */ 
ProgressDialog progDialog; 


/* Variables */ 
List<ParseObject> eventsArray = null; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home); 

    // ProgressDialog 
    progDialog = new ProgressDialog(this); 
    progDialog.setTitle(R.string.app_name); 
    progDialog.setMessage("Loading..."); 
    progDialog.setIndeterminate(false); 
    progDialog.show(); 

    // Call query 
    queryEvents(); 
} 



// MARK: - QUERY EVENTS 
public void queryEvents() { 

    ParseQuery<ParseObject> query = ParseQuery.getQuery(Configs.EVENTS_CLASS_NAME); 
    query.whereEqualTo(Configs.EVENTS_IS_PENDING, false); 
    query.orderByAscending(Configs.EVENTS_END_DATE); 
    query.findInBackground(new FindCallback<ParseObject>() { 
     public void done(List<ParseObject> objects, ParseException error) { 
      if (error == null) { 
       eventsArray = objects; 
       progDialog.dismiss(); 


       // CUSTOM GRID ADAPTER 
       class GridAdapter extends BaseAdapter { 
        private List<ParseObject> objects; 
        private Context context; 


        public GridAdapter(FindCallback<ParseObject> context, List<ParseObject> objects) { 
         super(); 
         this.context = (Context) context; 
         eventsArray = objects; 
        } 

        // CONFIGURE CELL 
        @Override 
        public View getView(int position, View convertView, ViewGroup parent) { 
         LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
         View gridView; 

         if (convertView == null) { 
          gridView = new View(context); 

          // Get layout from event_cell.xml 
          gridView = inflater.inflate(R.layout.event_cell, null); 

          // Get title 
          TextView titleTxt = (TextView) gridView.findViewById(R.id.titleTxt); 
          if (eventsArray.get(position).getString(Configs.EVENTS_TITLE) != null) { 
           titleTxt.setText(eventsArray.get(position).getString(Configs.EVENTS_TITLE).toString()); 
          } else { titleTxt.setText("N/A"); } 




         } else { gridView = (View) convertView; } 

         return gridView; 
        } 

        @Override 
        public int getCount() { 
         if (eventsArray != null) { 
          return eventsArray.size(); 
         } 
         return 0; 

        } 

        @Override 
        public Object getItem(int position) { 
         return eventsArray.get(position); 
        } 

        @Override 
        public long getItemId(int position) { 
         return 0; 
        } 
       } 


       // Init GridView and set its adapter 
       GridView eventsGrid = (GridView) findViewById(R.id.eventsGridView); 
       eventsGrid.setAdapter(new GridAdapter(this, eventsArray)); 

       eventsGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
         Toast.makeText(getApplicationContext(), ((TextView) v.findViewById(R.id.titleTxt)).getText(), Toast.LENGTH_SHORT).show(); 

        } 
       }); 


       // Error in query 
      } else { 
       Toast.makeText(getApplicationContext(), error.getMessage().toString(), Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 

} 


} //@end 

, 나는 성공적으로 Home.java 때문에 구문 분석 SDK의 작품에 eventsArray를 기록했습니다 괜찮 으면, 필자는 데이터베이스에서 데이터를 수집 할 수 있습니다 (Parse Server에서 데이터를 검색하여 발생하는 문제 일 수 있음).

여기 내가 뭘 잘못하고 있니?

+1

오류 로그를 제공해야합니다. 나는 생각하지 않는다. 공용 EventsGridAdapter (FindCallback findCallback, List eventsArray) { this.context = context; this.events = eventsArray; } 생성자에서 컨텍스트를 설정하지 않았습니다. – ChunTingLin

+0

감사합니다. Android Studio 콘솔에서 오류 로그를 얻으려면 어떻게 코딩해야합니까? Log.d() 만 알면 – cubycode

+0

충돌이 발생하면 Android logcat에 오류 수준 로그가 표시됩니다. 예외 스택 추적과 예외 클래스 및 예외 메시지가 표시됩니다. – ChunTingLin

답변

1

Activity 클래스에서 최종 Context 변수를 설정할 수 있습니다. 내부 클래스에서이 변수 사용 (FindCallback)

public void queryEvents() { 
    final Context myContext= this; 
    ParseQuery<ParseObject> query = ParseQuery.getQuery(Configs.EVENTS_CLASS_NAME); 
    query.whereEqualTo(Configs.EVENTS_IS_PENDING, false); 
    query.orderByAscending(Configs.EVENTS_END_DATE); 
    query.findInBackground(new FindCallback<ParseObject>() { 
     public void done(List<ParseObject> objects, ParseException error) { 

      .... 
      public GridAdapter(Context context, List<ParseObject> objects) { 
       super(); 
       this.context = context; 
       eventsArray = objects; 
      } 
      ... 
      eventsGrid.setAdapter(new GridAdapter(myContext, eventsArray)); 

     } 
    }); 
} 
+0

당신이 내 하루를 저장, 정말 고마워! 만약 내가 50 회 upvote 귀하의 답변을 할 수있는, 나는 이렇게 할 것이다 :) – cubycode

관련 문제