Create “loading” animation easily

后端 未结 3 1740
感动是毒
感动是毒 2020-12-12 03:26

I have an android listView with an image in each item. It takes a while till the image is loaded. How can I add a \"loading\" animation every time the image is

3条回答
  •  星月不相逢
    2020-12-12 04:15

    Use following code:

    MainActivity.java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    
        ArrayList> itemsList = new ArrayList>();
    
        ListView listView = (ListView) findViewById(R.id.listView);
    
        for (int i = 0; i < 5; i++) {
    
            // creating new HashMap
            HashMap map = new HashMap();
    
            // adding each child node to HashMap key => value
            map.put("key1", "value1");
            map.put("key2", "value2");
    
            // adding HashList to ArrayList
            itemsList.add(map);
        }
    
        ListAdapter listAdapter = new ListAdapter(this, itemsList);
        listView.setAdapter(listAdapter);
    }
    

    list_row.xml

    
    
    
    
    
    
    
    

    ListAdapter.java

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (convertView == null)
            vi = inflater.inflate(R.layout.list_row, null);
    
        ImageView imageView = (ImageView) vi.findViewById(R.id.imageView);
        final ProgressBar progressBar = (ProgressBar) vi.findViewById(R.id.progressBar);
    
        //This line shows progressBar again for recycled view
        progressBar.setVisibility(View.VISIBLE);
    
        Picasso.with(activity.getApplicationContext()).load(imagePath).resize(100, 100)
                .into(imageView, new Callback() {
                    @Override
                    public void onSuccess() {
                        progressBar.setVisibility(View.GONE);
                    }
    
                    @Override
                    public void onError() {
                        //error
                    }
                });
    
        return vi;
    }
    

    Don't forget to add import for Picasso Callback

    import com.squareup.picasso.Callback;
    

提交回复
热议问题