2013-11-23 55 views
1

我正在創建一個Android應用程序,並且遇到了這個問題:我有一個具有GridView佈局的MainActivity。該佈局由6個圖標組成。我想兩件事每個圖標爲GridView上的每個圖標分配一個字符串

1.On點擊:開始一個新的活動(我想我知道如何做到這一點)

2.1936長按:從/顯示一個簡短的字符串RES /價值/這與該圖標和活動

了相關的字符串,現在我已經設法使佔位符,這兩個動作,像這樣:

   super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      GridView gridview = (GridView) findViewById(R.id.gridview); 
      gridview.setAdapter(new ImageAdapter(this)); 

      //for each gridview item, we want one click reaction (that creates a new Activity) and 
      //a long click reaction, that shows an informative text on what this button does 

      //Simple Click Action 
      gridview.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
        //Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
        //placeholder. In future will be replaced with new activity creation 
       } 
      }); 

      //Long Click Action 
      gridview.setOnItemLongClickListener(new OnItemLongClickListener(){ 
       public boolean onItemLongClick(AdapterView<?> parent, View v, int description, long id){ 
        Toast.makeText(MainActivity.this, "" ,Toast.LENGTH_LONG).show(); 
        return true; 
       } 
      }); 



    } 

現在我想做的是在Toast.makeText功能我想要打印資源字符串。這個字符串對於每個圖標都是不同的,所以我感覺它應該通過創建gridview的ImageAdapter類來返回。 在這個類中,我創建了一個包含每個字符串資源ID的數組。所以我的問題是:

a)如何返回該資源ID,以便MainActivity可用?

b)如果有不同的方式來做到這一點,那是什麼?

我是個新手,所以這是完全有可能我已經取得了一些巨大的錯誤

感謝您的幫助提前!

回答

0

onItemLongClick(...)使用parent參數(這應該是你的GridView)和呼叫...

ImageAdapter theAdapter = (ImageAdapter) parent.getAdapter(); 

在你ImageAdapter只要你有一個方法返回字符串資源ID,那麼你可以使用position參數(命名爲description在你的代碼)類似...

int resId = theAdapter.getId(description); 

那麼對於Toast使用...

Toast.makeText(MainActivity.this, MainActivity.this.getString(resId),Toast.LENGTH_LONG).show(); 
0

點擊你會得到你所設定的setOnItemClickListener的網格佈局,機箱內切換view.getId(),讓你有SWICH內6情況,並就每一種情況下的過渡,因爲你需要,同樣土司setOnItemLongClickListener

0

感謝您有用answers.Turns出來我發現了一個不同的解決方案,完美的作品。

看到如何在GridView「訪問」圖像創建它們的引用,我創建引用的整數數組是這樣的:

private Integer[] testDescriptions = { 
      R.string.reflexes_description, 
      R.string.agility_description, 
      R.string.intellect_description, 
      R.string.strength_description, 
      R.string.proximity_description, 
      R.string.voice_description }; 

並實施了gridview.setOnItemLongClickListener如下:

gridview.setOnItemLongClickListener(new OnItemLongClickListener(){ 
       public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id){ 
        Toast toast = Toast.makeText(MainActivity.this, testDescriptions[position] ,Toast.LENGTH_LONG); 
        TextView v1 = (TextView) toast.getView().findViewById(android.R.id.message); 
        if(v1 != null) v1.setGravity(Gravity.CENTER); 
        toast.show(); 
        return true; 
       } 
      }); 
相關問題