我有一個超級TestUI應用程序。它有一個帶有按鈕的gridview。將Button onClick傳遞迴主要活動的最佳方法是什麼?
我想單擊按鈕點擊回傳到主Activity,以便它可以更新其狀態。
不幸的是,按鈕竊取點擊。所以典型的:
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(TestUI.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
不會被調用。
而是在適配器定義:
public View getView(int position, View convertView, ViewGroup parent) {
Button gridItem;
if (convertView == null) { // if it's not recycled, initialize some attributes
gridItem = new Button(mContext);
} else {
gridItem = (Button) convertView;
}
gridItem.setText("button " + String.valueOf(position));
gridItem.setClickable(true);
gridItem.setFocusable(false);
gridItem.setOnClickListener(new MyOnClickListener(position, mContext));
return gridItem;
這是支持的一類MyOnClickListener實現了OnClickListener接口。但是,如果我這樣做,我仍然需要回調主要活動,但它需要知道在控制程序狀態時執行了某些操作。
那麼從點擊按鈕更新「根」類/活動狀態的最好方法是什麼?
我知道這是一個基本的面向對象問題,但我主要是在ASM和C中編寫的,所以我坦率地只是不知道。
我可以做吐司這很好。我完全按照你的說法做了。我想在主要活動中設置一個公共變量。假設它有 public void setFlagVar(int theFlag){this.privateFlag = theFlag} – Brian
這是我想在主要活動中調用公共方法嗎?我不能,除非它是靜止的。好的。有「處理程序」,但這種機制對於我想要做的事情來說非常複雜。如果按鈕是textViews,我可以做到這一點沒有圖層的層和回調... 或者我可以放棄Gridview和使用LinearLayout +滾動+一些向量來包含按鈕... 但是爲了清楚地說明問題你有一個主要活動,它創建一個GridView的按鈕,你希望點擊按鈕來改變主活動中的局部變量或者發送回調。 – Brian
謝謝!我從例子中沒有意識到,除了上下文之外我可以傳遞任何東西!我正在看那個例子......我認爲世界上一切都很好......我可以通過傳遞任何公共職能回到主要對象,就像你所做的那樣,這就是我想要的。 – Brian