В основном я хочу вызвать метод RecyclerView.Adapter, когда щелкают элементы в BottomSheetDialogFragment.
У меня есть класс адаптера, расширяющий RecyclerView.Adapter для адаптации image_card. xml к представлению реселлера, и фрагмент, который расширяет BottomSheetDialogFragment. Которые содержатся в другом действии под названием ViewAll. java
BottomMenuDailogFragment. java
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
public class BottomMenuDailogFragment extends BottomSheetDialogFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View viewBottomMenu = inflater.inflate(R.layout.fragment_bottom_menu_modalsheet,
container, false);
// Binding layout elements
LinearLayout upload = viewBottomMenu.findViewById(R.id.upload_bottom_menu);
// On Upload
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Call ImageCardAdapter uploadAnimation()
}
});
return viewBottomMenu;
}
}
ImageAdapter. java
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.squareup.picasso.Picasso;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.ArrayList;
public class ImageCardAdapter extends RecyclerView.Adapter<ImageCardAdapter.ImageCardViewHolder> {
private ArrayList<ImageCard> ImageCardList;
public static class ImageCardViewHolder extends RecyclerView.ViewHolder {
static ImageCardViewHolder imgCardInstance;
public ImageView imageCardCaptured;
public TextView textViewLocation;
public TextView textViewCrop;
public ImageView imageViewUploadFail, imageViewUploadSuccess;
public ProgressBar progressBarUpload;
private ImageCardViewHolder(View viewImageCard) {
super(viewImageCard);
imageCardCaptured = viewImageCard.findViewById(R.id.imageView_captured);
textViewLocation = viewImageCard.findViewById(R.id.textView_location);
textViewCrop = viewImageCard.findViewById(R.id.textView_crop);
imageViewUploadFail = viewImageCard.findViewById(R.id.imageView_upload_fail);
imageViewUploadSuccess = viewImageCard.findViewById(R.id.imageView_upload_success);
progressBarUpload = viewImageCard.findViewById(R.id.progressBar_upload);
}
public static ImageCardViewHolder getInstance() {
return imgCardInstance;
}
public void uploadAnimation() {
imageViewUploadFail.setVisibility(View.INVISIBLE);
progressBarUpload.setVisibility(View.VISIBLE);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
progressBarUpload.setVisibility(View.INVISIBLE);
imageViewUploadSuccess.setVisibility(View.VISIBLE);
}
}, 5000);//5 seconds
}
}
public ImageCardAdapter(ArrayList<ImageCard> mImageCardList) {
ImageCardList = mImageCardList;
}
@NotNull
@Override
public ImageCardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutInflaterImageCard = LayoutInflater.from(parent.getContext())
.inflate(R.layout.image_card, parent, false);
return new ImageCardViewHolder(layoutInflaterImageCard);
}
@Override
public void onBindViewHolder(ImageCardViewHolder holder, int position) {
ImageCard currentImageCard = ImageCardList.get(position);
String imageUrl = currentImageCard.getImageUrl();
Picasso.get().load(new File(imageUrl)).into(holder.imageCardCaptured);
holder.textViewLocation.setText(currentImageCard.getLocation());
holder.textViewCrop.setText(currentImageCard.getCrop());
}
@Override
public int getItemCount() {
return ImageCardList.size();
}
}
ViewAll. java
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.io.File;
import java.util.ArrayList;
public class ViewAll extends AppCompatActivity {
private RecyclerView recyclerViewImageCard;
private RecyclerView.Adapter adapterImageCard;
private RecyclerView.LayoutManager linearLayoutManagerImageCard;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_all);
// Binding layout elements
BottomAppBar btnBottomMenu = findViewById(R.id.bottom_bar);
FloatingActionButton fabToCapture = findViewById(R.id.fabToCapture);
recyclerViewImageCard = findViewById(R.id.recyclerview_image_cards);
ArrayList<ImageCard> mImageCarList = new ArrayList<>();
// Populate recyclerview
String pathImageDirectory = Environment.getExternalStorageDirectory()
+ "/Android/media/com.exampleapp/";
File directoryImage = new File(pathImageDirectory);
File[] fileImageList = directoryImage.listFiles();
if (fileImageList != null) {
for (int i = 0; i < fileImageList.length; i++) {
Log.v("-- Image --", fileImageList[i].getName());
// Add to list
mImageCarList.add(new ImageCard(fileImageList[i].getAbsolutePath(),
"mLocation", "mCrop"));
}
}
else {
Toast.makeText(ViewAll.this, "No Data Found", Toast.LENGTH_LONG).show();
}
// Bind recyclerview and ImageCard adapter
recyclerViewImageCard.setHasFixedSize(true);
linearLayoutManagerImageCard = new LinearLayoutManager(this);
adapterImageCard = new ImageCardAdapter(mImageCarList);
recyclerViewImageCard.setLayoutManager(linearLayoutManagerImageCard);
recyclerViewImageCard.setAdapter(adapterImageCard);
// Bottom Menu
btnBottomMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BottomMenuDailogFragment bottomMenuSheet = new BottomMenuDailogFragment();
bottomMenuSheet.show(getSupportFragmentManager(), "exampleBottomSheet");
}
});
// End of onCreate
}
}
Поэтому я хочу вызвать uploadAnimation () в ImageAdapter, когда upload.setOnClickListener (), который находится в BottomMenuDailogFragment