Android - Как узнать, когда вызывается getView для раздувания списка

Joao Wind спросил: 13 октября 2017 в 06:37 в: android

У меня есть адаптер списка, который надувает список. В методе getView() я создаю AscyncTask, чтобы получить изображение из Интернета. Тем не менее, я понял, что метод getView() вызывается по многим причинам, а не только для того, чтобы раздуть список.

Мой вопрос: как узнать, когда вызывается метод для раздувания список? Я не хочу делать AsyncTask каждый раз, когда вызывается метод.

Вот мой код:

public class ListItem extends ArrayAdapter<Carro> {    private final Activity context;
    private final List<Carro> carros;    public ListItem(Activity context, List<Carro> carros) {
        super(context, R.layout.list_item, carros);
        this.context = context;
        this.carros = carros;
    }    @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 modelo = (TextView) rowView.findViewById(R.id.modelo);
        modelo.setText(carros.get(position).getModelo());        GetFoto getFoto = new GetFoto(rowView);
        getFoto.execute(position);
        return rowView;
    }    private class GetFoto extends AsyncTask<Integer, Void, Void> {        Drawable fotoDraw;
        View rowView;
        int position;        public GetFoto(View view) {
            this.rowView = view;
        }        @Override
        protected Void doInBackground(Integer... params) {
            position = params[0];
            HTTPHandler handler = new HTTPHandler();            fotoDraw = handler.makeServiceCallImage(carros.get(position).getFoto());
            return null;
        }        @Override
        protected void onPostExecute(Void aVoid) {
            ImageView imagem = (ImageView) rowView.findViewById(R.id.imagem);
            imagem.setImageDrawable(fotoDraw);
        }
    }
}

0 ответов