'How to use WebView in a recyclerview with Firebase?
i been search for days how to implement webview (onclick) with a recyclerview and Firebase but i can't figure out how to do this, can you guys help?
my adapter code
@Override
protected void onBindViewHolder(@NonNull myViewHolder holder, int position, @NonNull PTsModal model)
{
holder.titulo.setText(model.getTitulo());
holder.desc.setText(model.getDesc());
Glide.with(holder.img1.getContext()).load(model.getImgurl())
.placeholder(R.drawable.common_google_signin_btn_icon_dark)
.error(R.drawable.common_google_signin_btn_icon_dark_focused)
.into(holder.img1);
holder.img1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Log.v("Program","You clicked the image");
}
});
}
@NonNull
@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.box,parent,false);
return new myViewHolder(view);
}
class myViewHolder extends RecyclerView.ViewHolder
{
ImageView img1;
TextView titulo, desc;
public myViewHolder(@NonNull View itemView)
{
super(itemView);
img1 = (ImageView)itemView.findViewById(R.id.imagem_box);
titulo = (TextView) itemView.findViewById(R.id.txt_titulo);
desc = (TextView) itemView.findViewById(R.id.txt_desc);
}
}
} modal (gets and sets)
public class PTsModal
{
PTsModal()
{
}
public PTsModal(String titulo, String desc, String imgurl, String url)
{
this.titulo = titulo;
this.desc = desc;
this.imgurl = imgurl;
this.url = url;
}
"main"
public class Boticas_PT extends AppCompatActivity implements ValueEventListener
{
RecyclerView recyclerView;
ProgramAdapter programadapter;
RecyclerView.LayoutManager layoutmanager;
DrawerLayout drawerLayout;
Toolbar toolbar;
NavigationView navigationView;
//Indicar Titulo, descricao e imagem(mesmo tamanho)
TextView txt_Menu;
TextView txt_titulo_pontos_turisticos;
WebView web_view;
private FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
private DatabaseReference databaseReference = firebaseDatabase.getReference();
private DatabaseReference txtMenu = databaseReference.child("txt_Menu");//Nome
private DatabaseReference txtTituloPontosTuristicos = databaseReference.child("txt_titulo_pontos_turisticos");//Nome
private DatabaseReference webview = databaseReference.child("url");//Nome
protected void onStart()
{
super.onStart();
programadapter.startListening();
txtMenu.addValueEventListener(this);
txtTituloPontosTuristicos.addValueEventListener(this);
}
public void onDataChange(DataSnapshot dataSnapshot)
{
String message = dataSnapshot.getValue(String.class);
web_view.loadUrl(message);
if (dataSnapshot.getValue(String.class) != null) ;
{
String key = dataSnapshot.getKey();
if (key.equals("txt_Menu"))
{
String menu = dataSnapshot.getValue(String.class);
txt_Menu.setText(menu);
}
if (key.equals("txt_titulo_pontos_turisticos"))
{
String turismo = dataSnapshot.getValue(String.class);
txt_titulo_pontos_turisticos.setText(turismo);
}
}
}
public void onCancelled(DatabaseError error)
{
}
@Override
protected void onStop()
{
super.onStop();
programadapter.stopListening();
txtMenu.addValueEventListener(this);
txtTituloPontosTuristicos.addValueEventListener(this);
}
I can fetch the img and txtview from the database, but now when i click on the image i want to open a website (url) in my app so i search and i find the webview but can't make it work with recyclerview and firebase together.
Solution 1:[1]
onClick
@Override
public void onClick(View view)
{
Log.v("Program","You clicked the image");
Context context = view.getContext();
Intent intent = new Intent(context, Webview.class);
intent.putExtra("url",model.getUrl());
context.startActivity(intent);
}
Creat a new class(with layout) add in layout the webview
webview.class
public class Webview extends AppCompatActivity
{
WebView webview;
TextView txt_geturl;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
txt_geturl = (TextView) findViewById(R.id.txt_geturl);
Intent intent = getIntent();
String s1 = intent.getStringExtra("url");
txt_geturl.setText(s1);
webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(s1);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Drakan x |
