java - 获取 RecyclerView、OnClick 的单个字符串并将此字符串传递给 Google 地图搜索
问题描述
我正在我的应用程序中实现一个谷歌地图活动,我想通过地址给这个地图活动一个搜索。这些地址存储在 Firestore RecyclerView 中,当用户单击 Firestore RecyclerView 行之一时,我想让地图显示地址...
这是持有人
public class RecyclerViewHolder1 extends RecyclerView.ViewHolder {
public TextView mnomeEsercente, mindirizzoEsercente;
public RecyclerViewHolder1(@NonNull View itemView) {
super(itemView);
mnomeEsercente = itemView.findViewById(R.id.roWnomeEsercente);
mindirizzoEsercente = itemView.findViewById(R.id.roWindirizzoEsercente);
}
}
这是适配器
public class RecyclerViewAdapter1 extends RecyclerView.Adapter<RecyclerViewHolder1> {
Esercenti esercenti;
ArrayList<User1> user1ArrayList;
public RecyclerViewAdapter1(Esercenti esercenti, ArrayList<User1> user1ArrayList) {
this.esercenti = esercenti;
this.user1ArrayList = user1ArrayList;
}
@NonNull
@Override
public RecyclerViewHolder1 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(esercenti.getBaseContext());
View view = layoutInflater.inflate(R.layout.single_rowesercenti, parent, false);
return new RecyclerViewHolder1(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerViewHolder1 holder, int position) {
holder.mnomeEsercente.setText(user1ArrayList.get(position).getNomeEsercente());
holder.mindirizzoEsercente.setText(user1ArrayList.get(position).getIndirizzoEsercente());
}
@Override
public int getItemCount() {
return user1ArrayList.size();
}
}
还有活动
public class Esercenti extends FragmentActivity implements OnMapReadyCallback {
FirebaseFirestore db1;
RecyclerView mRecyclerViewEsercenti;
ArrayList<User1> user1ArrayList;
GoogleMap map;
RecyclerViewAdapter1 adapter1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_esercenti);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
user1ArrayList = new ArrayList<>();
setUpRecyclerView();
setUpFirebase();
loadDataFromFirebase();
}
private void loadDataFromFirebase() {
if (user1ArrayList.size() > 0)
user1ArrayList.clear();
db1.collection("esercenti").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (DocumentSnapshot querySnapshot : task.getResult()) {
User1 user1 = new User1(querySnapshot.getString("nomeEsercente"), querySnapshot.getString("indirizzoEsercente"));
user1ArrayList.add(user1);
}
adapter1 = new RecyclerViewAdapter1(Esercenti.this, user1ArrayList);
mRecyclerViewEsercenti.setAdapter(adapter1);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Esercenti.this, "Problema di caricamento,controlla la tua connessione!", Toast.LENGTH_SHORT).show();
}
});
}
private void setUpFirebase() {
db1 = FirebaseFirestore.getInstance();
}
private void setUpRecyclerView() {
mRecyclerViewEsercenti = findViewById(R.id.RecyclerViewEsercenti);
mRecyclerViewEsercenti.setHasFixedSize(true);
mRecyclerViewEsercenti.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
LatLng base = new LatLng(0, 0);
map.addMarker(new MarkerOptions().position(base).title("Sede AirBc"));
map.animateCamera(CameraUpdateFactory.newLatLng(base));
map.animateCamera(CameraUpdateFactory.zoomIn());
}
}
这个怎么做?先感谢您!
解决方案
您可以通过执行一些步骤来实现相同的目的。我在下面提到过。
- 在 RecyclerView 项目上注册点击事件。
- 检索该职位的模型。
- 在地图上为该位置设置标记。(如果您的模型中只有地址,则检索该地址的纬度/经度)
您必须对每个 RecyclerView 项目单击事件执行相同的过程。
如果您需要我提供更多信息,请告诉我。
希望这有帮助:)
推荐阅读
- c# - 在 Win 表单上出现错误“拒绝访问”
- vue.js - Nuxt.js:我可以使用基于布尔值的三元运算符添加一个类吗?
- multithreading - 当内存使用率变高时,Perl 多线程会变慢
- wordpress - 使用 Woocommerce Stripe 形成条纹信用卡未在 wordpress 上显示
- python - ImportError:没有名为robotparser的模块
- vba - VBA宏用于识别excel表格上的过滤条件是否显示数据,如果显示,如何获取特定的列单元格过滤数据
- python - Discord.py 离开服务器
- json - 如何使用 localStorage 修复 Vuex 中的 JSON 解析错误
- ruby - Ruby:将 CIDR 转换为网络掩码
- c# - 如何设置 Listviewitem 边距以使用 Listviewitem 的背景颜色?