运行Universal Image Loader时添加imageUrl?

时间:2014-05-19 20:15:49

标签: java android universal-image-loader

我已经使用gridview布局将Universal Image Loader实现到我的应用程序中。

当我按下按钮时,我想将新的imageUrl添加到Urls数组中。

我设法做到了,但是当我刷新我的imageList时,我仍然只看到StartUp上的数组中的图像。

如何使用新数组更新gridView?

修改

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

 }

这是ViewImage类

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

}

1 个答案:

答案 0 :(得分:2)

在gridView适配器上使用notifyDataSetChanged来反映网格视图中的更改。只要有新的imageUrl添加到URL数组,就可以通过以下方式刷新适配器:

adapter.notifyDataSetChanged();