Android 单击RecyclerView中的项目并返回所选项目的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

我在代码中实现这一点时遇到困难 我想要的东西是,当我点击该项目时,我会得到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.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)
                }
            });
        }
    }`