有人可以幫助我創建用戶定義的監聽器接口與一些代碼片段?如何在android中創建我們自己的Listener接口?
89
A
回答
5
創建監聽器接口。
public interface YourCustomListener
{
public void onCustomClick(View view);
// pass view as argument or whatever you want.
}
,並創建另一個活動方法setOnCustomClick(或片段),其中要應用自定義監聽器......
public void setCustomClickListener(YourCustomListener yourCustomListener)
{
this.yourCustomListener= yourCustomListener;
}
呼叫從您的第一項活動這種方法,並通監聽器接口...
89
請務必閱讀observer pattern
監聽器接口
public interface OnEventListener {
void onEvent(EventResult er);
// or void onEvent(); as per your need
}
然後在你的班上說Event
類
public class Event {
private OnEventListener mOnEventListener;
public void setOnEventListener(OnEventListener listener) {
mOnEventListener = listener;
}
public void doEvent() {
/*
* code code code
*/
// and in the end
if (mOnEventListener != null)
mOnEventListener.onEvent(eventResult); // event result object :)
}
}
在你的驅動程序類MyTestDriver
public class MyTestDriver {
public static void main(String[] args) {
Event e = new Event();
e.setOnEventListener(new OnEventListener() {
public void onEvent(EventResult er) {
// do your work.
}
});
e.doEvent();
}
}
133
public interface MyListener {
// you can define any parameter as per your requirement
public void callback(View view, String result);
}
public class MyActivity extends Activity implements MyListener {
@override
public void onCreate(){
MyButton m = new MyButton(this);
}
// method is invoked when MyButton is clicked
@override
public void callback(View view, String result) {
// do your stuff here
}
}
public class MyButton {
MyListener ml;
// constructor
MyButton(MyListener ml) {
//Setting the listener
this.ml = ml;
}
public void MyLogicToIntimateOthers() {
//Invoke the interface
ml.callback(this, "success");
}
}
1
在Android中,你可以創建一個接口,如監聽,你的活動器具它,但我不認爲這是一個好主意。 如果我們有很多組件來監聽它們狀態的變化,我們可以創建一個BaseListener實現接口監聽器,並使用類型代碼來處理它們。 我們可以綁定的方法,當我們創建XML文件,例如:
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button4"
android:onClick="Btn4OnClick" />
和源代碼:
public void Btn4OnClick(View view) {
String strTmp = "點擊Button04";
tv.setText(strTmp);
}
,但我不認爲這是一個好主意......
8
我已經創建了一個通用AsyncTask監聽器,它從AsycTask獨立類獲得結果,並使用接口回調將其提供給CallingActivity。
new GenericAsyncTask(context,new AsyncTaskCompleteListener()
{
public void onTaskComplete(String response)
{
// do your work.
}
}).execute();
接口
interface AsyncTaskCompleteListener<T> {
public void onTaskComplete(T result);
}
GenericAsyncTask
class GenericAsyncTask extends AsyncTask<String, Void, String>
{
private AsyncTaskCompleteListener<String> callback;
public A(Context context, AsyncTaskCompleteListener<String> cb) {
this.context = context;
this.callback = cb;
}
protected void onPostExecute(String result) {
finalResult = result;
callback.onTaskComplete(result);
}
}
看一看this,this question瞭解更多詳情。
-1
簡單的方法來做到這一點。首先在Activity類中實現OnClickListeners
。
代碼:
class MainActivity extends Activity implements OnClickListeners{
protected void OnCreate(Bundle bundle)
{
super.onCreate(bundle);
setContentView(R.layout.activity_main.xml);
Button b1=(Button)findViewById(R.id.sipsi);
Button b2=(Button)findViewById(R.id.pipsi);
b1.SetOnClickListener(this);
b2.SetOnClickListener(this);
}
public void OnClick(View V)
{
int i=v.getId();
switch(i)
{
case R.id.sipsi:
{
//you can do anything from this button
break;
}
case R.id.pipsi:
{
//you can do anything from this button
break;
}
}
}
3
有4個步驟:
1.創建接口類(受聽者)在圖1
2.使用接口(定義變量)
3.implements界面查看2(視圖1中使用的視圖2)
鑑於14.pass界面查看2
實施例:
步驟1:你需要創建接口和definde功能
public interface onAddTextViewCustomListener {
void onAddText(String text);
}
步驟2:使用該接口在查看
public class CTextView extends TextView {
onAddTextViewCustomListener onAddTextViewCustomListener; //listener custom
public CTextView(Context context, onAddTextViewCustomListener onAddTextViewCustomListener) {
super(context);
this.onAddTextViewCustomListener = onAddTextViewCustomListener;
init(context, null);
}
public CTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context, attrs);
}
public void init(Context context, @Nullable AttributeSet attrs) {
if (isInEditMode())
return;
//call listener
onAddTextViewCustomListener.onAddText("this TextView added");
}
}
第3,4步:實現活動
public class MainActivity extends AppCompatActivity implements onAddTextViewCustomListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//get main view from layout
RelativeLayout mainView = (RelativeLayout)findViewById(R.id.mainView);
//create new CTextView and set listener
CTextView cTextView = new CTextView(getApplicationContext(), this);
//add cTextView to mainView
mainView.addView(cTextView);
}
@Override
public void onAddText(String text) {
Log.i("Message ", text);
}
}
相關問題
- 1. 如何在android中創建我們自己的wifi熱點
- 2. 如何爲Android創建我們自己的PDF查看器?
- 3. 我們如何創建自己的CDN鏈接?
- 4. 在android中創建我自己的SSO
- 5. 如何在adobe indesign中創建我們自己的插件
- 6. 我們如何在java中創建自己的數據類型?
- 7. 我們如何在Android中創建一個窗口框架?
- 8. Rijndael算法(如何創建我們自己的密鑰)
- 9. 我們如何創建自己的Google實驗室功能?
- 10. 如何使用xcode創建我們自己的私有庫
- 11. Java Android - 創建我自己的類
- 12. 如何爲INotifyPropertyChanged接口創建自己的PropertyChangedEventArgs?
- 13. 在iphone中創建我們自己的框架工作
- 14. 如何在android中添加我們自己的手勢?
- 15. 如何創建我自己的加密?
- 16. 如何創建我自己的sap.suite.ui.generic.template.ObjectPage
- 17. 如何創建我自己的UITabBar?
- 18. 如何創建我自己的setSVMDetector?
- 19. 如何創建我自己的承諾?
- 20. 如何創建我自己的ListView UserControl?
- 21. 如何在WPF中創建自己的窗口框架?
- 22. 如何在java中構建我們自己的分析器?
- 23. 在android中,我們可以創建自己的模擬時鐘嗎?
- 24. 在Codeigniter中創建我自己的base_url()
- 25. 如何在窗口中運行我自己的android模擬器?
- 26. 如何在Android中創建自己的QR生成器?
- 27. Android:如何創建我自己的光標類?
- 28. android如何創建我自己的Activity並將其擴展?
- 29. EEA分面導航 - 如何在我們自己的產品中創建一個新的窗口部件
- 30. 創建我們自己的插件時使用phonegap構建
如何通過監聽器對象如果我們的按鈕已經在佈局中,而我們不使用MyButton m = new MyButton(this);方法來創建Button的對象。 – 2015-12-07 07:25:24