theOGloc
theOGloc

Reputation: 241

Add imageUrl while running Universal Image Loader?

I have implemented the Universal Image Loader into my app with a gridview layout.

When I press a button I want to add a new imageUrl to the Array of Urls.

I managed to do that, but when I refresh my imageList, I still only see the images that were in the Array on StartUp.

How can I update the gridView with the new Array?

EDIT

MainActivity

public class MainActivity extends Activity {

Button btnView;
private ListView listView;
Socket client;
PrintWriter printwriter;
EditText textField;
Button button;
String messsage;
ObjectInputStream input;
ObjectOutputStream output;
int counter = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(policy); 
    setContentView(R.layout.ac_home);

    //startRunning();



}

public void onImageGridClick(View view) {
    Intent intent = new Intent(this, ViewImages.class);
    startActivity(intent);
}


public void onTakeImageClick(View view) throws IOException {
    ViewImages.addImg();
}

 }

And here is the ViewImage class

public class ViewImages extends Activity {

private ListView listView;

ImageLoader loader;
   private static ImageListAdapter adapter; 
   private static List<String> mItems;  

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mItems = new ArrayList<String>();
    mItems.add("http://195.178.234.228/images/image8.jpg");
    mItems.add("http://195.178.234.228/images/image7.jpg");


    adapter = new ImageListAdapter(this, mItems);

    //


    listView = (ListView)findViewById(R.id.listView);
    listView.setAdapter(adapter);
}

public static void addImg(){
    mItems.add("http://195.178.234.228/images/image10.jpg");
    adapter.notifyDataSetChanged(); 

}




}

ImageListAdapter

public class ImageListAdapter extends BaseAdapter {

List<String> list;


int size;

private Context context;
private ImageLoader imageLoader;

public ImageListAdapter(Context context,List<String> list) {
    this.context = context;
    this.list = list;
    imageLoader = ImageLoader.getInstance();
    imageLoader.clearDiscCache();
    imageLoader.clearMemoryCache();
}

@Override
public int getCount() {
    return list.size();
}


@Override
public Object getItem(int arg0) {
    return null;
}



@Override
public long getItemId(int arg0) {
    return 0;
}



@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
    View v = convertView;

    ViewHolder vh = null;
    if (v == null) {
        v = View.inflate(context, R.layout.list_item, null);

        vh = new ViewHolder();
        vh.imageView = (ImageView) v.findViewById(R.id.imageView);

        v.setTag(vh);
    }
    else {
        vh = (ViewHolder)v.getTag();
    }

    DisplayImageOptions options = new DisplayImageOptions.Builder()
    .cacheOnDisc()
    .build();

    imageLoader.displayImage(list.get(position), vh.imageView, options);

    return v;
}

private class ViewHolder {
    ImageView imageView;
}

}

Upvotes: 0

Views: 86

Answers (1)

vjdhama
vjdhama

Reputation: 5058

Use notifyDataSetChanged on gridView Adapter to reflect changes in the gridview. Whenever there is a new imageUrl added to array of URL's refresh the adapter by :

adapter.notifyDataSetChanged();

Upvotes: 2

Related Questions