[英]open webview in new activity when item is clicked
我是 android 开发的初学者。 我创建了一个应用程序,在 RecyclerView 中显示来自 Firebase 的数据(图像和文本)。 一切正常,还有一个数据(url),我希望当用户单击任何项目时,它将使用 Intent 开始新的活动,并将在 Webview 中显示此 url。 我创建了新活动并在其中设置了 WebView。 我只是不知道如何将 url 从 firebase 传递给这个活动。 我搜索了 3 天,我确实知道我需要使用 setOnClickItemListener,但我没有找到任何与我的案例相关的内容。 这就是为什么我想把它贴在这里。 对不起我的英语不好。 谢谢你
我的 Firebase 数据是这样的在此处输入图像描述
这是 model.java
public class model {
String title, image, description ,url;
public model() {
this.url=url ;
this.title = title;
this.image = image;
this.description = description;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public String getImage() {
return image;
}
public String getDescription() {
return description;
}
public void setTitle(String title) {
this.title = title;
}
public void setImage(String image) {
this.image = image;
}
public void setDescription(String description) {
this.description = description;
}
}
这是 RecyclerAdapter.java
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>{
private Context mContext;
private List<model> modelList;
public RecyclerAdapter(Context context, List<model> listData) {
this.modelList = listData;
this.mContext = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.row,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.title.setText(modelList.get(position).getTitle());
holder.description.setText((modelList.get(position).getDescription()));
Picasso.get().load(modelList.get(position).getImage()).into(holder.imageView);
}
@Override
public int getItemCount() {
return modelList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView title,description;
ImageView imageView;
public ViewHolder(View itemView){
super(itemView);
title=itemView.findViewById(R.id.Title);
description=itemView.findViewById(R.id.Description);
imageView=itemView.findViewById(R.id.ImageView);
}
}
}
这是 MainActivity.java
public class MainActivity extends AppCompatActivity {
private DatabaseReference reference ;
private StorageReference mStorageRef ;
private RecyclerView recyclerView;
private ArrayList<model> modelList;
private Context mContext = MainActivity.this;
private RecyclerAdapter recyclerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayoutManager layoutManager= new LinearLayoutManager(this );
recyclerView=findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
reference = FirebaseDatabase.getInstance().getReference();
mStorageRef = FirebaseStorage.getInstance().getReference();
modelList = new ArrayList<>();
init();
}
private void init(){
clearAll();
Query query = reference.child("Data");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
model rmodel = new model();
rmodel.setImage(snapshot.child("image").getValue().toString());
rmodel.setTitle(snapshot.child("title").getValue().toString());
rmodel.setUrl(snapshot.child("url").getValue().toString());
rmodel.setDescription(snapshot.child("description").getValue().toString());
modelList.add(rmodel);
}
recyclerAdapter = new RecyclerAdapter(mContext , modelList);
recyclerView.setAdapter(recyclerAdapter);
recyclerAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void clearAll(){
if (modelList !=null){
modelList.clear();
if(recyclerAdapter != null)
recyclerAdapter.notifyDataSetChanged();
}
modelList = new ArrayList<>();
}
}
在onBindViewHolder
方法中:
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.title.setText(modelList.get(position).getTitle());
holder.description.setText((modelList.get(position).getDescription()));
Picasso.get().load(modelList.get(position).getImage()).into(holder.imageView);
holder.addOnClickListener(new OnClickListener() {
@override
public void onClick(View v) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(modelList.get(position).getUrl()));
startActivity(browserIntent);
}
});
}
这将在持有人上添加一个动作侦听器,以在浏览器中打开 URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.