2013-04-18 2 views
0

저는 Java, Android 등을 처음 사용합니다. 알아낼 수없는 문제가 있습니다.GridView가 버튼에서 호출되지 않은 경우 표시되지 않습니다.

나는 UniversalImageLoader을 기준으로 ImageAdapter으로 채워지는 GridView입니다. 내가

public void buttonsearch(View view) 
{ 
imagesearch();  
} 

GridView을 방법을 실행 버튼을 클릭하면 일반적으로 이미지를 표시합니다. 하지만 직접 호출 할 때.

imagesearch("somestring"); 

전혀 보이지 않습니다. 내 "디버그"메시지에 의해 나는 ImageAdapter이 작동 중임을 알 수 있습니다. 버튼을 클릭하면 GridView이 내용으로 채우기 시작합니다.

private void imagesearch(String... params) throws ClientProtocolException, 
     JSONException, IOException, InterruptedException, 
     ExecutionException { 

    EditText wordimage = (EditText) findViewById(R.id.wordimage); 
    String previos = null; 
     String wordtotr = null; 
     String strwordtos = null; 

     if (params.length != 0) 
      { 
      previos = params[0]; 
      } 
     if (previos != null) 
      { 
      strwordtos = previos; 

      wordimage.setText(strwordtos); 
      } 
      strwordtos = wordimage.getText().toString().replaceAll(" ", "%20"); 

    parsejsonimages getUrls = new parsejsonimages(); 

    getUrls.execute(strwordtos); 
    urlsp = getUrls.get(); 
    List<String> urls = new ArrayList<String>(); 

    urls = new ArrayList<String>(urlsp.values()); 
    directurls = new ArrayList<String>(urlsp.keySet()); 
    int j = 0; 

    while (urls.size() > j) { 
     urls.set(j, "http://someaddress:" + urls.get(j)); 
     j++; 
    } 

    GridView gridview = (GridView) findViewById(R.id.gridViewImages); 

    Integer gwight = gridview.getWidth(); 
    Integer ghight = gridview.getHeight(); 
    ImageAdapter images = new ImageAdapter(this, urls, ghight, gwight); 
    gridview.setAdapter(images); 
    gridview.setSelected(true); 


    gridview.setOnItemClickListener(new OnItemClickListener() { 



     public void setalphatoimagebypos(Integer pos, Integer Alpha) 
     { 

      GridView gridview = (GridView) findViewById(R.id.gridViewImages); 
      ImageView imgrecoil = (ImageView) (gridview 
        .getChildAt(pos)); 
      imgrecoil.setAlpha(Alpha); 

     } 

     public void onItemClick(AdapterView parent, View v, int position, 
       long id) { 

      if (strimgtag > -1) { 
       setalphatoimagebypos(strimgtag, 255);   
       strimgtag = position; 
       setalphatoimagebypos(strimgtag, 128); 


     } 

    }); 

편집 : 좋아, 문제는 나중에

+0

좋아, 내가 그렇게 부르면 나는 너비와 높이를 얻을 수 없다 ... 나는 이유를 모른다. 정수 gwight = gridview.getWidth(); // return 0 \t \t 정수 ghight = gridview.getHeight(); // return 0 – Rezon

+0

이것은 GridView가 아직 측정/그려지지 않았다는 것을 의미합니다. – NOSTRA

+0

감사합니다. 이미 알아 냈습니다. – Rezon

답변

0

확인 될 것입니다 설명 해결, 그래서 GridView 실제로 그려되기 전에 치수를 얻기 위해 노력했다. 그래서 OnCreate()에서 나는이 코드를 실행했을 때 GridView을 그려야 만 코드를 시작할 수 있습니다.

public void waiter() 
    { 
     final GridView gridview1 = (GridView) findViewById(R.id.gridViewImages); 

     gridview1.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() 
      { 
       @Override 
       public void onGlobalLayout() 
       { 
        gridview1.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
        gwight = gridview1.getWidth(); 
        ghight = gridview1.getHeight(); 
         try { 
        imagesearch(wordfromprev); 
        } catch (ClientProtocolException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (ExecutionException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      }); 
    } 
관련 문제