1

я пытался заполнить ListFragment с JSON контент, который я синтаксический анализ с моим JSONParcer (расширяет AsyncTask) класс. Я также написал CustomAdapter (расширяет Arrayadapter) из-за конкретной раскладки строки списка. Все работает просто отлично, за исключением нет загрузочного круга в ListFragment во время его загрузки (как и должно быть по умолчанию). Как я могу его вернуть?без загрузки круг в 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

В вашем ListFragment вызова setListShown(false);, чтобы скрыть ListView и показать значок загрузки. Если вы хотите, чтобы показать ваши детали (после загрузки их обработки, что угодно) вызов:

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

содержание списка все еще видно после загрузки, даже если установлено setListShown (false); перед ним – user3090300

+0

@ user3090300 - убедитесь, что вы вызываете setListAdapter (адаптер); перед вызовом setListShown (false); – dymmeh

0

Вы можете заполнить ListFragment с AsyncTask, как это:

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.

Смежные вопросы