Android 单击RecyclerView中的项目并返回所选项目的URL
我在代码中实现这一点时遇到困难 我想要的东西是,当我点击该项目时,我会得到URL,并在Android 单击RecyclerView中的项目并返回所选项目的URL,android,android-fragments,android-recyclerview,adapter,Android,Android Fragments,Android Recyclerview,Adapter,我在代码中实现这一点时遇到困难 我想要的东西是,当我点击该项目时,我会得到URL,并在WebView中打开一个新的Activity,谢谢 Beats.java package com.novela.minha.novela; public class Beaches { public String name; public String getName() { return name; } public void setName(String name) { this.n
WebView
中打开一个新的Activity
,谢谢
Beats.java
package com.novela.minha.novela;
public class Beaches {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Beaches() {
}
public String url;
}
MyAdapter.java
package com.novela.minha.novela;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
Context c;
ArrayList<Beaches> beaches;
public MyAdapter(Context c, ArrayList<Beaches> beaches){
this.c= c;
this.beaches=beaches;
}
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false);
MyHolder holder= new MyHolder(v);
return holder;
}
@Override
public void onBindViewHolder(MyHolder holder, int position) {
holder.nameTxt.setText(beaches.get(position).getName());
PicassoClient.downloadimg(c, beaches.get(position).getUrl(),holder.img);
}
@Override
public int getItemCount() {
return beaches.size();
}
}
FirebaseCliete.java
package com.example.admin.firebaserecyclerviewexample;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.firebase.client.ChildEventListener;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.novela.minha.novela.Beaches;
import com.novela.minha.novela.MyAdapter;
import java.util.ArrayList;
public class FirebaseClient {
Context c;
String DB_URL;
RecyclerView recyclerView;
Firebase firebase;
ArrayList<Beaches> beaches= new ArrayList<>();
MyAdapter adapter;
public FirebaseClient(Context c, String DB_URL, RecyclerView recyclerView)
{
this.c= c;
this.DB_URL= DB_URL;
this.recyclerView= recyclerView;
Firebase.setAndroidContext(c);
firebase=new Firebase(DB_URL);
}
public void savedata (String name, String texto, String url)
{
Beaches b= new Beaches();
b.setName(name);
b.setUrl(url);
b.setTexto(texto);
firebase.child("Beaches").push().setValue(b);
}
public void refreshdata()
{
firebase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
getupdates(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
getupdates(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
public void getupdates(DataSnapshot dataSnapshot){
beaches.clear();
for(DataSnapshot ds :dataSnapshot.getChildren()){
Beaches b= new Beaches();
b.setName(ds.getValue(Beaches.class).getName());
b.setTexto(ds.getValue(Beaches.class).getTexto());
b.setUrl(ds.getValue(Beaches.class).getUrl());
beaches.add(b);
}
if(beaches.size()>0)
{
adapter=new MyAdapter(c, beaches);
recyclerView.setAdapter(adapter);
}else
{
Toast.makeText(c, "No data", Toast.LENGTH_SHORT).show();
}
}
}
Java
package com.novela.minha.novela;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MyHolder extends RecyclerView.ViewHolder {
TextView nameTxt, textoTxt;
ImageView img;
public MyHolder(View itemView) {
super(itemView);
nameTxt= (TextView) itemView.findViewById(R.id.nameTxt);
img=(ImageView) itemView.findViewById(R.id.imageView3);
textoTxt = (TextView) itemView.findViewById(R.id.textoTxt);
}
}
PicassoClient.java
package com.novela.minha.novela;
import android.content.Context;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
public class PicassoClient {
public static void downloadimg(Context c, String url, ImageView img)
{
if (url!=null && url.length()>0)
{
Picasso.with(c).load(url).placeholder(R.drawable.placeholder).into(img);
}else
{
Picasso.with(c).load(R.drawable.placeholder).into(img);
}
}
}
我想播放webview中密封的项目的URL
NewsWebView.java
package com.example.minhanovela;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
public class NewsWebView extends AppCompatActivity {
WebView myWebView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_web_view);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
progressBar = (ProgressBar)findViewById(R.id.pro);
myWebView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
Bundle b = getIntent().getExtras();
String id = b.getString("id");
myWebView.loadUrl(id);
myWebView.setWebViewClient(new WebViewClient());
myWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
setTitle("Loading...");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
setTitle(view.getTitle());
}
});
}
}
这里有一个基本的例子
static class ViewHolder extends RecyclerView.ViewHolder {
private TextView name;
private ImageView image;
public ViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.name);
image = (ImageView) itemView.findViewById(R.id.image);
}
public void bind(final ContentItem item, final OnItemClickListener listener) {
name.setText(item.name);
Picasso.with(itemView.getContext()).load(item.imageUrl).into(image);
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
//Here's where you get the url from the item like so
Log.d("URL", "The url from the item is: " + item.getUrl)
}
});
}
}`
您可以看到我是如何集成毕加索和点击监听器的,我使用Log类输出url,您可以使用意图将url发送到其他活动您是否考虑使用数据绑定,您可以通过点击获取每个项目的url。。。如果您正在考虑使用数据绑定,请告诉我如何实现此功能,我是编程界的新手,谢谢好的。。信息技术这有点进步,所以我们最好不要使用这种策略。。。你现在有没有得到url?没有,你能在我的代码中实现吗?请不要把你的整个项目都扔在这里。您需要将其精简到演示问题所需的最少代码。请研究如何创建一个。
package com.example.minhanovela;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
public class NewsWebView extends AppCompatActivity {
WebView myWebView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_web_view);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
progressBar = (ProgressBar)findViewById(R.id.pro);
myWebView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
Bundle b = getIntent().getExtras();
String id = b.getString("id");
myWebView.loadUrl(id);
myWebView.setWebViewClient(new WebViewClient());
myWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
setTitle("Loading...");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
setTitle(view.getTitle());
}
});
}
}
static class ViewHolder extends RecyclerView.ViewHolder {
private TextView name;
private ImageView image;
public ViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.name);
image = (ImageView) itemView.findViewById(R.id.image);
}
public void bind(final ContentItem item, final OnItemClickListener listener) {
name.setText(item.name);
Picasso.with(itemView.getContext()).load(item.imageUrl).into(image);
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
//Here's where you get the url from the item like so
Log.d("URL", "The url from the item is: " + item.getUrl)
}
});
}
}`