0

我正在使用actionBarSherlockSherlockListFragment并且想要设置自定义BaseAdpater。我正在使用AsyncTask解析JSON并填充适配器。但没有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和解析。但问题是列表视图。

+1

'getCount'应该返回'data.size()' – Blundell

+0

oops!我没有注意到:) –

回答

1

你必须正确overrid您

@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; 
} 

,因为ListView控件认为你有0项,这就是为什么它不显示任何东西。