0

actionBarSherlockSherlockListFragment과 함께 사용하고 있으며 사용자 지정 BaseAdpater을 설정하고 싶습니다. JSON을 구문 분석하고 어댑터를 채우려면 AsyncTask을 사용하고 있습니다. 그러나 listview은 보이지 않습니다. 조각이 비어 있습니다. 이것은 내가 노력하고 코드입니다 :내 목록 조각이 표시되지 않습니다

public class LatestSubmissions extends SherlockListFragment { 

    LatestSubmissionsAdapter adapter = null; 

    ArrayList<HashMap<String, String>> submissions = new ArrayList<HashMap<String, String>>(); 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     new GetSubmissionsListTask().execute(CommonUtils.USER_SUBMISSION_URL); 
     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

    protected class GetSubmissionsListTask extends 
      AsyncTask<String, Void, String> { 

     @Override 
     protected String doInBackground(String... params) { 
      return new JSONFetcher().getJSONStringFromUrl(params[0]); 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      try { 
       JSONObject jObject = new JSONObject(result); 
       //related code 
       submissions.add(map); 
       } 
      } catch (JSONException e) { 

      } 
      adapter = new LatestSubmissionsAdapter(getSherlockActivity(), submissions); 
      setListAdapter(adapter); 
     } 
    } 
} 

그리고 이것은 LatestSubmissionsAdapter입니다 :

public class LatestSubmissionsAdapter extends BaseAdapter { 
    private Context mContex; 
    private ArrayList<HashMap<String, String>> data; 
    private static LayoutInflater inflater = null; 

    public LatestSubmissionsAdapter(Context context, 
      ArrayList<HashMap<String, String>> data) { 
     this.mContex = context; 
     this.data = data; 
     inflater = (LayoutInflater) mContex 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi = convertView; 
     if (convertView == null) 
      vi = inflater.inflate(R.layout.latest_submissions, null); 
     RelativeLayout firstRow = (RelativeLayout) vi 
       .findViewById(R.id.first_row); 
     TextView language = (TextView) firstRow.findViewById(R.id.lang); 
     TextView verdict = (TextView) firstRow.findViewById(R.id.verdict); 
     RelativeLayout secondRow = (RelativeLayout) vi 
       .findViewById(R.id.second_row); 
     TextView problem = (TextView) secondRow 
       .findViewById(R.id.problem_name_id); 
     TextView rank = (TextView) secondRow.findViewById(R.id.rank); 
     RelativeLayout thirdRow = (RelativeLayout) vi 
       .findViewById(R.id.third_row); 
     TextView submissionTime = (TextView) thirdRow 
       .findViewById(R.id.submit_time); 
     TextView executionTime = (TextView) thirdRow 
       .findViewById(R.id.exec_time); 

     HashMap<String, String> submissionInfo = new HashMap<String, String>(); 
     submissionInfo = data.get(position); 

     language.setText(submissionInfo.get(CommonUtils.KEY_LANGUAGE_ID)); 
     verdict.setText(submissionInfo.get(CommonUtils.KEY_VERDICT_ID)); 

     problem.setText(submissionInfo.get(CommonUtils.KEY_PROBLEM_ID)); 
     rank.setText(submissionInfo.get(CommonUtils.KEY_SUBMISSION_RANK)); 

     submissionTime.setText(submissionInfo 
       .get(CommonUtils.KEY_SUBMISSION_TIME)); 
     executionTime.setText(submissionInfo.get(CommonUtils.KEY_RUNTIME)); 

     return vi; 
    } 

} 

json으로 제대로 ownloaded 및 구문 분석됩니다. 그러나 문제는 listview입니다. ListView에 당신이 0 항목이 생각하기 때문에

+1

'getCount'는'data.size()'를 반환해야합니다. – Blundell

+0

oops! 나는 아직 눈치 채지 못했다 :) –

답변

1

당신은 그게 아무것도 표시되지 않는 이유, 제대로

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

을 overrid해야합니다.

관련 문제