ListFragment中没有加载圈

时间:2013-12-19 15:36:26

标签: android android-asynctask android-arrayadapter android-listfragment

我试图用 JSON 内容填充 ListFragment ,我用 JSONParcer(扩展AsyncTask )类解析。由于特定的列表行布局,我还编写了 CustomAdapter(extends Arrayadapter)。所有工作都很好,除了 ListFragment 中的无加载圈时它正在加载(因为它应该是默认情况下)。我该怎么办呢?

这是我的适配器代码:

 public class CustomAdapter extends ArrayAdapter<ListItem> 
{
  private final Activity context;
  private final ListItem[] data;

  public CustomAdapter(Activity context,ListItem[] itemz) 
  {
    super(context, R.layout.list_item,itemz);
    this.context = context;
    this.data = itemz;
  }

  @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.list_item, null,true);

        TextView txtTitle = (TextView) rowView.findViewById(R.id.title);
        TextView txtBody = (TextView) rowView.findViewById(R.id.body);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.picture);

        txtTitle.setText(data[position].getTitle());
        txtBody.setText(data[position].getBody());
        imageView.setImageBitmap(data[position].getPicture());

        return rowView;
    }
}

2 个答案:

答案 0 :(得分:2)

ListFragment来电setListShown(false);中隐藏ListView并显示加载图标。 当您想要显示您的项目(加载,处理,等等)之后,请致电:

if (isResumed())
    setListShown(true);
else
    setListShownNoAnimation(true);

答案 1 :(得分:0)

您可以使用AsyncTask填充ListFragment,如下所示:

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

    @Override
    protected Void doInBackground(Void... arg0) {
        // Heavy code
        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }


    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        // Set the list adapter
        setListAdapter(yourCustomAdapter);
    }
}

此类应该在扩展ListFragment的类中。