簡體   English   中英

將參數傳遞給自定義視圖 android

[英]pass parameters to custom view android

我正在嘗試將日歷添加到我的應用程序。 我為此使用了一個自定義視圖,我想將事件從數據庫添加到日歷中。 我需要將一個字符串傳遞給自定義視圖,以便它知道從哪里檢索數據。 我沒有找到怎么做。

package com.example.homerunner;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class CoachCalendarActivity extends AppCompatActivity {

    CustomCalendarView customCalendarView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_coach_calendar);

        Intent intent = getIntent();
        String uid = intent.getStringExtra("uid");
        Log.d("Loge", "onCreate: " + uid);

        customCalendarView = (CustomCalendarView)findViewById(R.id.custom_calender_view);
    }
}

我要傳遞的字符串保存在String uid = intent.getStringExtra("uid");

自定義查看代碼



public class CustomCalendarView extends LinearLayout implements View.OnClickListener, AdapterView.OnItemClickListener, EventRecyclerAdapter.OnEventListener {

    Context context;

    public CustomCalendarView(Context context) {
        super(context);
    }

    public CustomCalendarView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        this.context = context;

    }

    public CustomCalendarView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}

您可以做的最簡單的事情之一是在您的自定義視圖 class 中添加一個 setter 方法,然后使用此 setter 將您想要的值傳遞給自定義視圖。

例如,您可以執行以下操作:

public class CustomCalendarView extends LinearLayout implements View.OnClickListener, AdapterView.OnItemClickListener, EventRecyclerAdapter.OnEventListener {

    Context context;
    //note the new filed added!
    private String uid;

    public CustomCalendarView(Context context) {
        super(context);
    }

    public CustomCalendarView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        this.context = context;

    }

    public CustomCalendarView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    //note the new setter added!
    public void setUid(String uid){
        this.uid = uid;
    }

}

然后,從活動中,您可以簡單地執行以下操作:

package com.example.homerunner;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class CoachCalendarActivity extends AppCompatActivity {

    CustomCalendarView customCalendarView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_coach_calendar);

        Intent intent = getIntent();
        String uid = intent.getStringExtra("uid");
        Log.d("Loge", "onCreate: " + uid);

        customCalendarView = (CustomCalendarView)findViewById(R.id.custom_calender_view);

        //note the setter usage!
        customCalendarView.setUid(uid);
    }
}

現在自定義視圖具有您需要發送它的 uid。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM