【问题标题】:no loading circle in ListFragmentListFragment 中没有加载圈
【发布时间】:2013-12-19 15:36:25
【问题描述】:

我试图用 JSON 内容填充 ListFragment,我使用 JSONParcer(extends AsyncTask) 类对其进行解析。由于特定的列表行布局,我还编写了 CustomAdapter(extends Arrayadapter)。除了加载时 ListFragment 中的 no loading circle 外,所有工作都很好(默认情况下应该如此)。怎么找回来?

这是我的适配器代码:

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

【问题讨论】:

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


    【解决方案1】:

    在您的ListFragment 中调用setListShown(false); 以隐藏ListView 并显示加载图标。 当您想显示您的项目时(在加载、处理等之后)调用:

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

    【讨论】:

    • 即使有setListShown(false),加载后列表内容依然可见;走在它前面
    • @user3090300 - 确保调用 setListAdapter(adapter);在你打电话之前 setListShown(false);
    【解决方案2】:

    您可以使用 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 的类中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      相关资源
      最近更新 更多