2014-05-22 2 views
0

나는 내 애플 리케이션에 범용 이미지 로더를 gridview 레이아웃으로 구현했다.listView/refreshing adapter 업데이트

버튼을 누르면 URL의 배열에 새로운 imageUrl을 추가하려고합니다.

나는 그럭저럭 할 수 있었지만, imageList를 리프레쉬 할 때, StartUp의 Array에 있던 이미지 만 볼 수있다.

GridView를 새 Array로 업데이트하려면 어떻게해야합니까?

편집

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

당신의 메소드 onTakeImageClick()이 효과가 없습니다. ViewImages 활동에 이미지 URL을 추가해야하는 경우, 한 가지 방법은 intent.putExtra() 메소드를 전달하는 것입니다. 이 방법은 반환됩니다

getIntent().getStringExtra("ImageName"); 

다른 것은 당신의 imageViewAdapter에, 방법의 getItem()가 대신 null

list.get(arg0); 

를 반환 반환됩니다 : -

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

당신은에 의해이 추가가 가져올 수 있습니다 위치 arg0에서 봅니다.

+0

감사를 추가 할 수 있도록, 당신은 또한 이미지 URL의 배열을 보낼 수 있습니다! – theOGloc

+0

흠, 하나의 이미지 만 목록에 추가 할 수 있습니다. – theOGloc

0

는 의도에서 이미지 URL을 전송하는 경우, 나는 그것을 확인해 보겠습니다 이상의 이미지를

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