2011-11-23 39 views
0
public class CompanySearchActivity extends RathbonesActivity { 
private CompanySearchAdapter mStockListAdapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.companysearch_layout); 
    final EditText keywordET = (EditText)findViewById(R.id.codeET); 
    final Button search = (Button)findViewById(R.id.button_stock_add); 
    final Activity a= CompanySearchActivity.this; 
    search.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String keyword = keywordET.getText().toString(); 
      Log.i("keyword: ",keyword); 
      ArrayList codearr = getResults(keyword); 
      mStockListAdapter = new CompanySearchAdapter(a,codearr); 

      ListView listview = (ListView) findViewById(R.id.stocklist); 
      listview.setAdapter(mStockListAdapter); 
      listview.setOnItemClickListener(this); 
      listview.setOnItemLongClickListener(this); 
     } 
    }); 


} 

listview.setOnItemClickListener(this); listview.setOnItemLongClickListener(this);是給因爲這個關鍵字的錯誤的行,我與「一」太取代它,但它不工作。什麼可能是實現這個目標的可能方法?努力實現ListView控件的onclick函數內部

回答

2

如果你想使用父活動的onClick方法你的活動必須實現OnItemClickListener和OnItemLongClickListener

public class CompanySearchActivity extends RathbonesActivity implements OnItemClickListener, OnItemLongClickListener 
{ 
    @Override 
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
     { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
     { 
      // TODO Auto-generated method stub 

     } 

} 

注碼「implements OnItemClickListener, OnItemLongClickListener」 這是實現這種方式是至關重要的。

然後,您可以撥打:

listview.setOnItemClickListener(CompanySearchActivity.this); 
listview.setOnItemLongClickListener(CompanySearchActivity.this); 
0

this關鍵字是對擁有當前正在執行的方法的對象的引用。在這種情況下,this引用您正在定義的匿名對象View.OnClickListener。嘗試用CompanySearchActivity.this替換this

+0

我試過,但它仍然不工作! – Maverick

0

您的listview onClick定義應該看起來像您的搜索偵聽器。

search.setOnClickListener(new View.OnClickListener() { 






     search.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String keyword = keywordET.getText().toString(); 
      Log.i("keyword: ",keyword); 
      ArrayList codearr = getResults(keyword); 
      mStockListAdapter = new CompanySearchAdapter(a,codearr); 
     } 
    }); 

    ListView listview = (ListView) findViewById(R.id.stocklist); 
    listview.setAdapter(mStockListAdapter); 

    listview.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
<do somthing when its clicked> 
     } 
    }); 

還保證,如果你有多種佈局,這些視圖中的項目(ListView和搜索) 在companysearch_layout.xml

+0

爲什麼你在列表視圖中點擊onClick方法?通常onclicklisteners是分開完成的。 –

+0

沒有它的不工作! – Maverick

+0

重申我上面的評論:你爲什麼要在另一個onclicklistener定義中設置onclicklistener。如果沒有理由,那就把它趕出去。 –