在每个recyclerView中,我都有一个按钮,当按下该按钮时,将打开一个带有标记的地图片段。我正在尝试实施google地图,但被下面的**所限制。我无法调用getSupportFragmentManager,也无法解决“ this”。在这些字段中应输入什么适当的值?
感谢您的帮助!
public class HomeAdapter extends RecyclerView.Adapter<MyViewHolder> implements IAdapter, OnMapReadyCallback {
Context context;
ArrayList<Task> tasks;
private DatabaseReference mDatabase, mDatabase2;
GoogleMap mGoogleMaps;
MapView mapView;
public HomeAdapter(Context c, ArrayList<Task> t) {
this.context = c;
this.tasks = t;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
mDatabase2 = FirebaseDatabase.getInstance().getReference().child("User").child(uid).child("tasks");
mDatabase = FirebaseDatabase.getInstance().getReference().child("Task");
return new MyViewHolder((LayoutInflater.from(context).inflate(R.layout.others_task_list, parent, false)), "Home");
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
holder.description.setText(tasks.get(position).getDescription());
holder.timedue.setText("Expires by: " + convertTime(tasks.get(position).getTimedue()));
holder.deliveryfee.setText("Delivery Fee: $"+tasks.get(position).getDeliveryfee());
String img = tasks.get(position).getImageURL();
if (img.equals("default")) {
holder.img.setImageResource(R.mipmap.ic_launcher);
} else {
Glide.with(holder.img.getContext()).load(img).into(holder.img);
}
int x = position;
clickButton(holder.acceptTask, x);
showLocation(holder.locationBtn, x);
}
public static boolean isAppAvailable(Context context, String appName) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(appName, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
@Override
public int getItemCount() {
return tasks.size();
}
public String convertTime(String timedueSTR){
int timedueInt = (Integer.parseInt(timedueSTR));
java.util.Date timedue = new java.util.Date((long) timedueInt * 1000);
timedueSTR = String.valueOf(timedue);
return timedueSTR.substring(0,16);
}
public void sendtoTele(String teleURL){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://telegram.me/" + teleURL));
final String appName = "org.telegram.messenger";
final boolean isAppInstalled = isAppAvailable(context.getApplicationContext(), appName);
if (isAppInstalled) {
context.startActivity(intent);
} else {
Toast.makeText(context, "Telegram not Installed", Toast.LENGTH_SHORT).show();
}
}
public void clickButton(Button button,final int position){
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Long tsLong = System.currentTimeMillis() / 1000;
if (tsLong >= Long.valueOf(tasks.get(position).getTimedue()).longValue()) {
// to remove after time passes
Toast.makeText(context, "Sorry, this task has expired! :-(", Toast.LENGTH_LONG);
mDatabase.child(tasks.get(position).getTaskid()).removeValue();
mDatabase2.child(tasks.get(position).getTaskid()).removeValue();
return;
}
String teleURL = tasks.get(position).getTeleURL();
if (tasks.get(position).getType().equals("Request")) {
mDatabase.child(tasks.get(position).getTaskid()).removeValue();
mDatabase2.child(tasks.get(position).getTaskid()).removeValue();
}
sendtoTele(teleURL);
}
});
}
public void showLocation(Button button, final int position, final MyViewHolder holder) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
**SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);**
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
}
}