我已经使用gridview布局在我的应用程序中实现了通用图像加载器。

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

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

如何使用新的Array更新gridView?

编辑

主要活动

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

}

最佳答案

您的方法onTakeImageClick()无效,如果您需要将图像URL添加到ViewImages Activity中,一种方法是通过intent.putExtra()方法。

Intent intent = new Intent(this, ViewImages.class);
intent.putExtra("ImageName" , "ImageUrl");
startActivity(intent);


您可以通过以下方式获取此额外费用:

getIntent().getStringExtra("ImageName");


另一件事是在您的imageViewAdapter中,方法getItem()返回null而不是return

list.get(arg0);


此方法将返回位置arg0处的视图。

关于java - 更新listView/刷新适配器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23808237/

10-12 00:27
查看更多