0

Java、Android などは初めてです。理解できない問題があります。

私はGridViewそれがにImageAdapter基づいて設定されていUniversalImageLoaderます。ボタンをクリックしてメソッドを起動すると、

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


        }

    });

編集:OK問題解決の説明は後で

4

1 に答える 1

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();
                    }
                }
          });
    }
于 2013-04-19T08:54:31.970 に答える