2017-10-04 11 views
0

我的活動中有一個GridView。我在GridView中有2個元素。一個是ImageView和一個TextView。從適配器的主要活動中的gridview的子項目獲取單擊事件

我想只做點擊ImageView的操作,請記住我希望在活動中發生這種情況,而不是在GridView適配器中發生。

現在我有一個適配器,我可以使用ImageView調用getView()中的click動作,但我不想那樣。我希望這種情況發生閒置在那裏我打電話,

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

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

     //THIS WORKS FINE 
     String string = ((TextView) v.findViewById(R.id.text)).getText().toString(); 
     Log.d("string",string); 

     //THE PROBLEM OCCURS HERE 
     ImageView capture = (ImageView) v.findViewById(R.id.capture); 
     capture.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

       } 
      }); 
} 

//的問題時這裏

當我第一次點擊的ImageView是應該發生的動作,不會發生。相反,它發生在第二次點擊和進一步。

這就是我所困擾的問題。我想要在第一次點擊時發生此操作,而不是第二次點擊。

+0

因爲你有兩個點擊監聽器裏面。如果你想單獨爲TextView和ImageView單擊,你應該使用'getView()'。 –

回答

0

在你的活動中創建一個方法。現在

,適配器,調用的onClick使用

((Activityname)context).methodname(parameters); 
+0

謝謝,這對我有幫助。 – Aditya

+0

如果我的回答有幫助,請立即贊同並批准ü –

0

你可以看到代碼,方法塊級

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

    String string = ((TextView) v.findViewById(R.id.text)).getText().toString(); 
    Log.d("string",string); 

    //THE PROBLEM OCCURS HERE 
    ImageView capture = (ImageView) v.findViewById(R.id.capture); 
    capture.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      } 
     }); 
} 

你imageview的捕獲被添加任何動作被點擊的GridView之後。因此,在第一次點擊之後,它正在執行,然後將點擊偵聽器設置爲imageview,然後單擊其執行onClick塊。所以更好,處理適配器內的imageview點擊事件。

您可以在適配器類中的活動中調用方法,但應該在適配器類中實現setOnClickListener

+0

謝謝,但我需要以某種方式完成此項工作。 – Aditya

0

與接口的幫助下,你可以做,做一件事創建一個接口,並實現它在你的活動,並獲得適配器上的ImageView點擊這裏啓動界面,你會得到的點擊活動內

0

我認爲問題在於第一次點擊你只需在你的imageView上設置了OnClickListener,所以它的onClick()方法沒有被調用。然而,在第二次點擊時,因爲已經設置了監聽器,所以調用onClick()

不是每次都在網格中的項目點擊(不使順便說任何意義)新監聽器設置爲您的ImageView的,你應該做的任一:

如果ImageView的在每件商品都有按照相同的方式處理,在創建視圖時將OnClickListener設置爲適配器中的imageView。

如果不是,則將用於處理imageView點擊的接口傳遞給適配器的構造函數,然後在活動中創建適配器時實現此接口。

相關問題