2011-07-05 57 views
0

我已經定義了一個模型類:如何在onClick(View v)函數中訪問我的對象?

public class MyObject { 
    ... 
} 

在我的活動,我從服務層這個對象。一切工作正常,在這一點上,我唯一的問題是,在活動,如果我設置setOnClickListenerTextView的,我怎麼能訪問myObject的?我的意思是表示下面的代碼:

//my custom object 
MyObject obj = SERVICE.getObject(); 

TextView tx = new TextView(this); 
tx.setText("Click me"); 
tx.setOnClickListener(
    new OnClickListener(){ 

      @Override 
      public void onClick(View v){ 

       //how to access obj here? 
      } 
     } 
); 

在上面的代碼,我不能訪問objonClick(View v)功能,如何擺脫它來訪問obj裏面onClick(View v)

+0

要麼你必須聲明MyObj中作爲最終或作爲全球 – ingsaurabh

回答

1

如果你有一個ID,您可以設置標籤字段ID和在onclick檢索:

tx.setTag(obj.getId()); 
tx.setOnClickListener(
    new OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      Long id = v.getTag(); 
     } 
    } 
); 

您可以存儲任意對象,所以你可能會存儲整個對象在那裏。

+0

這是我正在尋找。謝謝! – Leem

0

將您的對象設置爲最後您可以訪問它。

2

馬克MyObject obj作爲final

final MyObject obj = SERVICE.getObject(); 

TextView tx = new TextView(this); 
tx.setText("Click me"); 
tx.setOnClickListener(
    new OnClickListener(){ 

      @Override 
      public void onClick(View v){ 
       obj.doStuff(); //this should work now... 
      } 
     } 
); 
+0

鏈接現在是死 – topwik

+0

@towpse感謝,鏈接刪除。 –

0

有一個簡單的方法:

class testClass 
{ 
    testClass obj; 
    public testClass() { 
     obj=this; 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     TextView tx = new TextView(this); 
     tx.setText("Click me"); 
     tx.setOnClickListener(
      new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        obj.doStuff(); //this should work now... 
       } 
      } 
     ); 
    } 
} 
相關問題