第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何將數(shù)據(jù)從一個(gè)活動(dòng)傳遞到另一個(gè)活動(dòng)

如何將數(shù)據(jù)從一個(gè)活動(dòng)傳遞到另一個(gè)活動(dòng)

陪伴而非守候 2023-02-23 17:22:05
我正在創(chuàng)建一個(gè)事件應(yīng)用程序,其中包含recyclerview.事件recyclerview包括事件名稱、圖像、日期和時(shí)間、心形圖像(例如:Instagram 上的心形按鈕),當(dāng)用戶單擊“感興趣”按鈕時(shí),它會(huì)改變顏色。單擊任何事件后,會(huì)出現(xiàn)其描述,并且有兩個(gè)按鈕:“感興趣”和“參加”。如果用戶單擊“感興趣”,則心形顏色recyclerview將變?yōu)辄S色。該事件還將保存在另一個(gè)列表中,直到該事件從保存的列表中刪除。到目前為止,我已經(jīng)通過(guò)單擊“感興趣”按鈕將該事件保存在已保存列表中。但我不知道如何同時(shí)更改心形顏色以及如何讓它保持不變,直到事件從保存的列表中刪除。我的 recyclerview 中有心臟圖像。當(dāng)我在描述活動(dòng)中單擊興趣按鈕時(shí),recyclerview 中的心臟圖像會(huì)發(fā)生變化。
查看完整描述

4 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

假設(shè)您將事件保存在某個(gè)模型類中,您可以做的是在調(diào)用onBindViewHolder適配器的方法時(shí)檢查事件是否標(biāo)記為保存。如果是,那么您需要將心臟圖像更改為另一個(gè)黃色的心臟圖像,或者您可以在心臟圖像上應(yīng)用色調(diào)使其變成黃色。

您可以使用此代碼更改可繪制對(duì)象

heartImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.yellow_heart));

您可以使用此代碼應(yīng)用色調(diào)

heartImageView.setColorFilter(Color.argb(255, 255, 255, 0))

編輯(基于評(píng)論)

如果心臟在第一個(gè)活動(dòng)中,而感興趣的按鈕在第二個(gè)活動(dòng)中,您需要做的是在單擊感興趣的按鈕時(shí)保存事件的狀態(tài)。返回到第一個(gè)活動(dòng)后,您可以檢查事件的狀態(tài),然后使用上述兩種方法中的任何一種來(lái)更新圖像。

編輯 2(基于共享的新代碼)

收到 Volley 調(diào)用的響應(yīng)后,您應(yīng)該將事件 ID 保存在某處以跟蹤您感興趣的事件(這可以在模型類或某個(gè)全局列表中)。當(dāng)您返回到您的第一個(gè)活動(dòng)(其中包含 recyclerview)時(shí),您需要使用您擁有的已存儲(chǔ)事件 ID 列表檢查每個(gè)事件 ID,并為每個(gè)匹配的事件更改心臟。


查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
富國(guó)滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以在以下幫助下執(zhí)行此操作startActivityforresult


在 Activity1 中,啟動(dòng) Activity2 為:


Intent i = new Intent(this, Activity2.class);

startActivityForResult(i, 1);

在 Activity2 中,使用 setResult 發(fā)送回?cái)?shù)據(jù):


Intent intent = new Intent();

intent.putExtra("updatedArraylist", "arraylist")

setResult(RESULT_OK, intent);        

finish();

在 Activity1 中,使用 onActivityResult 接收數(shù)據(jù):


public void onActivityResult(int requestCode, int resultCode, 

Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1) {

        if(resultCode == RESULT_OK) {

            String strArrayList = 

            data.getStringExtra("updatedArraylist");

            Gson gson = new Gson();

            Type youListType = new TypeToken<List<Model>>() {

            }.getType();

            List<Model> yourTypeList = gson.fromJson(strArrayList, 

            yourListType);

            ArrayList finalArraylist = new ArrayList<>(yourTypeList);

            yourArraylist.addAll(finalArraylist);    

            youtAdapter.notifyDataSetChanged();

        }     

    }


查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊

在第一個(gè)活動(dòng)中


Intent intent = new Intent(getApplicationContext(), SecondActivity.class);

startActivityForResult(intent, 100);

從第二個(gè)活動(dòng)開(kāi)始,您必須在活動(dòng)被 finish() 或后退鍵銷毀之前執(zhí)行以下代碼(為此,您可以覆蓋第二個(gè)活動(dòng)的 onBackPressed 并刪除超類調(diào)用并調(diào)用以下方法)。


private void exitWithResult(){

    Intent returnIntent = new Intent();

    returnIntent.putExtra("result", "Id of selected item");

    setResult(Activity.RESULT_OK, returnIntent);

    finish();

}

同樣在第一個(gè)活動(dòng)中,您必須在 onActivityResult 方法中處理結(jié)果。


@Override

    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

        if (requestCode == 100) {

            if(resultCode == Activity.RESULT_OK){

                String result=data.getStringExtra("result");

                Log.e("DATA", "" + result);

            }

            if (resultCode == Activity.RESULT_CANCELED) {

                //Write your code if there's no result

                Log.e("DATA", "No result");

            }

        }

    }

更新


您可以使用接口作為從適配器到活動(dòng)的回調(diào)。startActivityForResult 可以在接口的回調(diào)方法中調(diào)用。您必須通過(guò)適配器構(gòu)造函數(shù)將回調(diào)接口與數(shù)據(jù)集一起傳遞給適配器。


在適配器中聲明此接口


public interface AdapterCallback{


        void onAdapterSelected(int pos);


    }

在第一個(gè)活動(dòng)中實(shí)現(xiàn)這樣的接口。


MyAdapter.AdapterCallback callback = new MyAdapter.AdapterCallback() {

        @Override

        public void onAdapterSelected(int pos) {

            Intent intent = new Intent(getApplicationContext(), 

            SecondActivity.class);

            startActivityForResult(intent, 100);

        }

    };

然后像這樣設(shè)置適配器。


RecyclerView rv = findViewById(R.id.rv_list);

rv.setHasFixedSize(true);

rv.setLayoutManager(new LinearLayoutManager(getApplicationContext()));

MyAdapter adapter = new MyAdapter(callback);   //This is the only change

rv.setAdapter(adapter);

下面適配器的變化。(你應(yīng)該像你已經(jīng)做的那樣傳遞列表數(shù)據(jù)和回調(diào))


    private AdapterCallback callback;


        public MyAdapter(AdapterCallback callback) {

            this.callback = callback;

        }


        @Override

        public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {

            viewHolder.mBtn.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                    callback.onAdapterSelected(i);

                }



   });

    }

接口也來(lái)自內(nèi)部適配器。正如我一開(kāi)始提到的那樣,我不會(huì)在這里重復(fù)


查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以將coloronclick 事件應(yīng)用于心臟按鈕,如以下代碼:

your_image_id.setBackgroundColor(getResources().getColor(R.color.yellow));


查看完整回答
反對(duì) 回復(fù) 2023-02-23
  • 4 回答
  • 0 關(guān)注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)