當前位置:首頁 » 安卓系統 » android綁定控制項

android綁定控制項

發布時間: 2023-01-01 02:11:19

Ⅰ 如何綁定android點擊事件

綁定android點擊事件需要在該空間添加android:onClick="click"屬性(click是為事件的方法),具體操作步驟如下:

1、使用Android studio創建一個Android項目,如下圖:

Ⅱ android 開發 listview綁定radiobutton控制項 如何實現listview列表中只有一個radiobutton被選中

listview綁定radiobutton控制項,需要用自定義的Adapter

控制RadminButton只能選一個的方法:

  1. 使用自定義Adapter

  2. 在adapter.getView方法中給RadminButton注冊點擊事件

  3. 在onClick事件中用個集合記錄當前RadminButton的checked狀態

  4. 調用adapter.notifyDataSetChanged(); 刷新列表即可

  5. 因為刷新列表的時候,會重新調用getView方法

Ⅲ android中的simpleAdapter.viewBinder();是否支持Button控制項的綁定

剛剛去查了下文檔,綜合了一下得出了以下結論:
首先android.widget.SimpleAdapter.ViewBinder介面下有setViewValue(View view, Object data, String textRepresentation) 這個抽象方法,而TextView和ImageView都是直接繼承自View,而Button是通過繼承TextView間接繼承View。另外:SimpleAdapter中的public void setViewImage (ImageView v, String value) 和public void setTextView(TextView tv,String value)均是調用bindView去給ImageView設置圖像或是給TextView設置文本值,但只有當ViewBinder不存在或者如果存在的ViewBinder無法處理綁定到一個ImageView或者TextView時才調用上述的那兩個方法。這兩點中都沒有提及到Button相應的適配方法,我想可能Android在定義時就沒有考慮將Button加入進去。
我是這么分析的,希望能夠幫到你。

Ⅳ Android 多個控制項綁定同一個PopupWindow,當點擊popupWindow中的控制項時獲取到觸發popWindow控制項的文本

有長按事件啊,每個控制項的都有的
longtouch應該是

Ⅳ android 不再手寫控制項ID綁定,插件化批量綁定

記錄下插件使用中遇到的問題

由於ButterKnife 已經不開始維護了,新項目建議使用第二種方式

GenerateFindViewById 使用效果如下圖

安裝路徑

按照上面安裝插件,由於我公司電腦android開發環境搭建是直接 從筆記本上打包java、 android studio、android sdk 拷貝到公司電腦D盤目錄,而非android 安裝時的默認C盤目錄,安裝好插件後,每次重啟android studio 會報 Plugin "GenerateFindViewById Injections!" is incompatible (supported only in IntelliJ IDEA).錯誤 。

)

Ⅵ 如何在Android中添加控制項

可以如下操作: 1、在一段文字中插入n個標記,比如 2、用string.split("")方法把該文字拆分成String數組,進而把String數組轉換成TextView數組tvs[n+1] 3、藍色按鈕是自定義的控制項,共有n個,用for循環和LayoutInflater方法轉換成cvs[n], 4、for

Ⅶ 如何綁定android點擊事件

在Android中為組件綁定點擊事件的方式可以分為四種,
1、 在xml布局文件中,定義onclick的方式
<!—第一步在XML文件中給對應組件添加Onclick屬性-->
<Button
android:id="@+id/submitbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:onClick="buttonClickHandle"
android:layout_alignParentTop="true"
android:text="提交" />
//第二步在對應的Activity中創建一個與onClick屬性值相同的方法,並傳入一個View參數,當Button被點擊時就會回調這個方法。
public void buttonClickHandle(View view) {
Snackbar.make(coordinatorLayout, "你點擊了Button", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
另外三種綁定點擊事件的方式實際上就是通過組件調用setOnClickListener()的方法,下面我們就來看一下這個方法的源碼
/**
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}

根據源碼我們可以看到這個方法中需要一個OnClickListener的對象。下面我們就來看看這個OnClickListener對象是個什麼東東。
/**
* Interface definition for a callback to be invoked when a view is clicked.
*/
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
根據源碼我們可以看到實際上這個OnClickListener就是一個介面,這個介面中有一個onClick的抽象方法。所以我們在創建這個OnClickListener對象是還需要實現這個抽象方法。這個onClick的抽象方法實際上就是當我們點擊按鈕後會回調的方法。我們對於點擊事件的響應處理就在這個方法中進行。
現在我們已經了解了設置點擊事件的setOnClickListener方法,根據我們如何創建這個方法中的OnClickListener對象,我們設置點擊事件的方式可以分為如下三種:
1、內部類的形式
a. package com.example.hsport.catalog;

import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout coordinatorLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator);
// 獲取button對象
Button button = (Button) findViewById(R.id.submitbutton);
//創建內部類的實例
MyListener myListener = new MyListener();
//設置button的點擊事件,將實現OnClickListener介面的內部類實例傳入到setOnClickListener方法中
button.setOnClickListener(myListener);
}

//創建一個內部類實現View.OnClickListener介面,並實現其onClick方法
private class MyListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Snackbar.make(coordinatorLayout, "你點擊了Button", Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
}
}

2、 匿名內部類的方式
package com.example.hsport.catalog;

import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout coordinatorLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator);
//獲取Button對象
Button button = (Button) findViewById(R.id.submitbutton);
//以創建一個View.OnClickListener的匿名內部類,並實現它的onClick方法
button.setOnClickListener(new View.OnClickListener() {
//在onClick方法中我們就可以設置button的響應代碼了
@Override
public void onClick(View v) {
Snackbar.make(coordinatorLayout, "你點擊了Button",Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
});
}

3、 讓主類實現OnClickListener介面,然後再主類實現未實現的方法

package com.example.hsport.catalog;

import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private CoordinatorLayout coordinatorLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator);
//獲取Button對象
Button button = (Button) findViewById(R.id.submitbutton);
//因為我們讓MainActivity實現了View.OnClickListener這個介面,所以setOnClickListener方法中的參數直接傳入this即可。
button.setOnClickListener(this);
}

//因為MainActivity實現了View.OnClickListener介面,所以在MainActivity中還有要實現該介面中改的onClick方法來處理點擊事件。
@Override
public void onClick(View v) {
Snackbar.make(coordinatorLayout, "你點擊了Button",Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
}
關於如何給組件綁定點擊事件,是Android中的基礎知識,如果你還想更加詳細的了解,推薦你可以去一個叫做秒秒學的教程網站看看,夯實下基礎。

Ⅷ Android,DataBinding的官方雙向綁定

在Android Studio 2.1 Preview 3之後,官方開始支持雙向綁定了。

可惜目前Google並沒有在Data Binding指南裡面加入這個教程,並且在整個互聯網之中只有 這篇文章 介紹了如何使用反向綁定。

在閱讀一下文章之前,我假設你已經知道如何正向綁定。

在正向綁定中,我們在Layout裡面的綁定表達式是這樣的:

當user.name的數據改動時,我們的TextView都會同步改變文字。

現在假設一種情況,當你更換成EditText時,如果你的用戶名User.name已經綁定到 EditText 中,當用戶輸入文字的時候,你原來的user.name數據並沒有同步改動,因此我們需要修改成:

看出微小的差別了嗎?對,就是"@{}"改成了"@={}",是不是很簡單?

同樣你也可以在別的View上引用屬性:

當CheckBox的狀態發生改變的時候,ImageView也會同時發生改變。在復雜情況下,這個特性沒什麼卵用,因為邏輯部分我們是不建議寫在XML中。

開啟雙向綁定,需要在項目的build.gradle中設置:

同樣,你需要在你Mole的build.gradle中設置:

我們剛才的例子裡面只顯示了系統自帶的應用,那麼如果是自定義控制項,或者是我們更細顆粒度的 Observable 呢?等下就揭曉如何自定義自己的雙向綁定,我們來看看目前Android支持的控制項:

設想一下我們使用了下拉刷新 SwipeRefreshLayout 控制項,這個時候我們希望在載入數據的時候能控制refreshing的狀態,所以我們加入了 ObservableBoolean 的變數swipeRefreshViewRefreshing來正向綁定數據,並且能夠在用戶手動下拉刷新的時候同步更新swipeRefreshViewRefreshing數據:

接下來我們需要告訴框架,我們需要將 SwipeRefreshLayout 的isRefreshing的值反向綁定到 swipeRefreshViewRefreshing :

這是一種簡單的定義,其中event和method都不是必須的,因為系統會自動生成,寫出來是為了更好地了解如何綁定的,可以參考官方文檔 InverseBindingMethod 。

當然你也可以使用另外一種寫法,並且如果你的值並不是直接對應 Observable 的值的時候,就可以在這里進行轉換:

上面的event同樣也不是必須的。以上的定義都是為了讓我們能夠在布局文件中使用"@={}"這個雙向綁定的特性。接下來你需要告訴框架如何處理refreshingAttrChanged事件,就像處理一般的監聽事件一樣:

一般情況下,我們都需要設置正常的OnRefreshListener,所以我們可以合並寫成:

現在我們終於可以使用雙向綁定的技術啦。但是要注意,需要設置 requireAll = false ,否則系統將識別不了refreshingAttrChanged屬性,前文提到的文章例子里並沒有設置這個。

在ViewModel中,我們的數據是這樣的:

在布局文件中是這樣設置的:

最後我們還有一個小問題,就是雙向綁定有可能會出現死循環,因為當你通過Listener反向設置數據時,數據也會再次發送事件給View。所以我們需要在設置一下避免死循環:

這樣就沒問題啦。

熱點內容
c語言學生成績查詢系統 發布:2025-05-14 22:58:30 瀏覽:4
怎麼進別人的伺服器 發布:2025-05-14 22:45:55 瀏覽:772
用編程寫音樂 發布:2025-05-14 22:45:08 瀏覽:782
如何識別電腦的網路配置 發布:2025-05-14 22:38:46 瀏覽:847
pipforpython3 發布:2025-05-14 22:38:34 瀏覽:350
如何把迷你世界的伺服器搞崩 發布:2025-05-14 22:37:15 瀏覽:94
如何讓安卓卡死機 發布:2025-05-14 22:36:27 瀏覽:634
wemall微商城源碼 發布:2025-05-14 22:15:20 瀏覽:804
隆地優選交易密碼是什麼 發布:2025-05-14 21:53:23 瀏覽:97
強酸強鹼存儲櫃 發布:2025-05-14 21:45:16 瀏覽:565