亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我嘗試在 recyclerview 上顯示從相機拍攝的圖像時,圖像出現多行

當我嘗試在 recyclerview 上顯示從相機拍攝的圖像時,圖像出現多行

慕標5832272 2023-03-09 17:08:33
我正在開發一款尋寶游戲應用程序,該應用程序會在回收站視圖中顯示要拍攝的物品列表。該列表是從 Firebase 加載的。有一個 onClickListener,因此當單擊列表中的一個項目時,它會打開相機,然后您拍照,我想在所選項目旁邊顯示圖像?,F在,當我拍照時,它會在回收視圖中顯示在多行上。例如,如果我選擇列表中的第 0 項并拍照,則該圖片將同時顯示在列表中的第 0 項和第 11 項上。我試圖讓它只顯示在所選項目上。我在添加圖像后嘗試使用 adapter.notifyDataSetChanged() 和 adapter.notifyItemChanged(tmpPosition) 但它們都在多行上顯示圖像。我知道只有列表中的一項得到更新。我現在的做法是創建一個名為 tmpPosition 的全局 int 變量。當您單擊列表中的項目時,我將 tmpPosition 設置為等于所選項目的索引。然后在 onActivityResult 中,我使用以下方法設置圖像:scavengerHuntItemsList.get(tmpPosition).setScavengerHuntImage(imageTaken);adapter.notifyDataSetChanged();從我的 MainActivity 這是打開相機的 onClickListener     ((ScavengerHuntRecyclerAdapter) dapter).setOnItemClickListener(new      ScavengerHuntRecyclerAdapter.ClickListener() {                @Override                public void onItemClick(int position, View v) {                    //Here I am saving the position of the item so later I can update the correct index in the list                    tmpPosition = position;                    dispatchTakePictureIntent();                }            });            scavengerHuntMainRecyclerView.setAdapter(adapter);        }我的相機來自 MainActivityprivate void dispatchTakePictureIntent() {    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {        File photoFile = null;        photoFile = createPhotoFile();        if (photoFile != null) {            pathToFile = photoFile.getAbsolutePath(); //gets the path to the image            Uri photoURI = FileProvider.getUriForFile(ScavengerHuntMainActivity.this, "com.example.test", photoFile);            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);        }    }}
查看完整描述

1 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

發生這種情況是因為RecyclerView重用了它的視圖(項目/單元格)。單元格 1 的內容因此在單元格 11 中重復使用,導致照片出現多次。


這可以通過清除內容來解決ImageView。


if (currentItem.getScavengerHuntImage() != null) {

        scavengerHuntViewHolder.scavengerHuntLayoutImageView.setImageBitmap(currentItem.getScavengerHuntImage());

        Log.d("in adapter UPDATED POS", "position  =  " + i);

    } else {

scavengerHuntViewHolder.scavengerHuntLayoutImageView.setImageResource(android.R.color.transparent);

//or

//scavengerHuntViewHolder.scavengerHuntLayoutImageView.setImageBitmap(null);


查看完整回答
反對 回復 2023-03-09
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號