【问题标题】:Updating listView / refreshing adapter更新 listView / 刷新适配器
【发布时间】:2014-05-22 13:26:28
【问题描述】:

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

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

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

如何使用新的 Array 更新 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(); 

}




}

图像列表适配器

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

}

【问题讨论】:

    标签: java android universal-image-loader


    【解决方案1】:

    您的 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 而不是返回

    list.get(arg0);
    

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

    【讨论】:

    • 谢谢,我去看看!
    • 嗯,我只能将一张图片添加到列表中。
    【解决方案2】:

    如果你是在意图发送imageUrl,你也可以发送imageurl数组,这样你就可以添加更多图片

       Intent intent = new Intent(this, ViewImages.class);
       intent.putExtra("ImageName" , new String[]{"ImageUrl","ImageUrl","ImageUrl"});
       startActivity(intent);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      相关资源
      最近更新 更多