2015-01-23 1 views
0

이미지 어댑터를 사용하여 그리드 뷰를 드로어 블로 채우고 있습니다. 이전에 전달 된 데이터를 기반으로 onCreate에서 그리드 요소 수, 열 수 및 크기를 설정했습니다. 활동. 그러면 무작위 드로어 블 그리드가 생성됩니다 (아래 코드 참조).이미지 어댑터 On Demand 실행

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return gridSize; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

      if (convertView == null) { 
      randomPosition = rng.nextInt(12); 
      imageView = new ImageView(mContext); 
      imageView.setScaleType(ScaleType.CENTER_CROP); 
      imageView.setLayoutParams(new GridView.LayoutParams(circleS, circleS)); 

      imgSet(); 
      } 
      return imageView; 
    } 
    }//end adapter//////// 

imgSet()을 사용할 수있는 12 중 임의 그리기를 취득하고 현재 이미지 뷰에 대한 imageResource로 설정하고, 또한 태그 값을 할당하고 다른 검사를 수행하는 다른 방법을 트리거한다.

이제 작업을 다시 시작하지 않고 요청시 새로운 크기와 형식으로 표를 다시로드하고 싶습니다. grid.invalidateViews()를 사용해 보았습니다. 그러나 이것은 모든 이미지 뷰를 삭제하는 것처럼 보였습니다. 마지막 이미지를 제외하고는 모든 이미지 뷰가 삭제 된 것처럼 보였습니다.

그리드에서 현재 이미지 뷰를 모두 삭제 한 다음이 이미지 어댑터를 실행하여 새로 크기가 지정된 그리드와 포맷 된 그리드를 다시 채우는 방법은 무엇입니까?

답변

1

이 코드는 어딘가에 있어야합니다.

GridView gridview = (GridView) rootView.findViewById(R.id.gridview); 
ImageAdapter imageAdapter = new ImageAdapter(<context>); 
gridview.setAdapter(imageAdapter); 

Gridview 열 개수 호출을 변경하려는 경우.

gridview.setNumColumns(<X>); 

데이터가 변경된 경우에도보기를 업데이트해야합니다.

imageAdapter.notifyDataSetChanged(); 
+0

imageAdapter.notifyDataSetChanged(); grid.invalidateViews()와 같은 일을하는 것처럼 보입니다. 그러나 실제로 그리드에 새로운 값을주었습니다. 그러나 gridview의 첫 번째 항목은 이전 크기를 그대로 유지하고 새 이미지 뷰의 나머지 부분과 같이 크기를 조정하지 않습니다. – MDubzem

+0

알 수 있습니다. !! !! 첫 번째 실행에서 convertView는 같음 null이 아니어야하므로 어디에 레이아웃 매개 변수를 설정했는지 다른 곳을 추가 했으므로 이제는 완벽하게 작동합니다. – MDubzem