简体   繁体   English

单击recyclerView Item时如何将数据获取到webView活动中

[英]how to get data into webView activity when recyclerView Item is clicked

this is adapter class 这是适配器类

package com.example.murarilal.xyz;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.util.EventLogTags;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.List;

/**
 * Created by Murarilal on 19-11-2017.
 */

     class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{

            private List<ListItem> listItems;
            private Context context;

        public MyAdapter(List<ListItem> listItems, Context context) {
            this.listItems = listItems;
            this.context = context;
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item,parent,false);
            return new ViewHolder(v);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {

            ListItem listItem=listItems.get(position);

            holder.headText.setText(listItem.getHead());
            holder.desText.setText(listItem.getDes());
            holder.linearLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


                    Intent intent=new Intent(context,ArticleActivity.class);
                    intent.putExtra("description",);
                    context.startActivity(intent);
                }
            });

          // Picasso.with(context).load(R.drawable.netfix).resize(900,300).into(holder.imageView);

        }

        @Override
        public int getItemCount() {
            return listItems.size();
        }

        public class ViewHolder extends RecyclerView.ViewHolder{

                public  TextView headText;
                public  TextView desText;
            public LinearLayout linearLayout;
                //public ImageView imageView;

            public ViewHolder(View itemView) {
                super(itemView);

                headText=(TextView) itemView.findViewById(R.id.heading);
                desText=(TextView) itemView.findViewById(R.id.description);
              //  imageView= (ImageView) itemView.findViewById(R.id.imageView);
                    linearLayout=(LinearLayout)itemView.findViewById(R.id.linearlayout);

            }
        }

    }

this is the main activity 这是主要活动

package com.example.murarilal.xyz;

import android.app.DownloadManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    RecyclerView recyclerView;
    RecyclerView.Adapter adapter;
    public List<ListItem>listItems;
    RequestQueue queue;

    private String url="https://newsapi.org/v2/top-headlines?sources=techcrunch&apiKey=d6eaad863cc640a7a6864d18196bea9e";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        queue= Volley.newRequestQueue(this);

       recyclerView=(RecyclerView)findViewById(R.id.recyclerview);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.addItemDecoration(new Dec(20));
        listItems=new ArrayList<>();

        home();




    }

    public void home()
    {
        JsonObjectRequest request =new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {

                try {
                    JSONObject obj = new JSONObject(String.valueOf(response));

                    JSONArray array = obj.getJSONArray("articles");
                    for (int i=0;i<array.length();i++) {
                        JSONObject o = array.getJSONObject(i);
                        ListItem item =new ListItem(o.getString("title"),o.getString("description"));

                        listItems.add(item);
                    }
                    adapter=new MyAdapter(listItems,getApplicationContext());
                    recyclerView.setAdapter(adapter);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
                , new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        queue.add(request);
    }
}

Listitem Activity Listitem活动

package com.example.murarilal.xyz;

/**
 * Created by Murarilal on 19-11-2017.
 */
public class ListItem {



     public String head;
     public String des;
    //private String image;



    public ListItem(String head, String des) {
        this.head=head;
     //  this.image=image;
        this.des=des;
    }


    public String getHead() {

        return head;
    }

    public String getDes() {
        return des;
    }


  /* public String getImage() {
        return image;
    }*/
}

what String should i pass in OnclickListener in Myadpater class to get description data in WebView .What Should be the String to be passed in putextra method with Description.or please generally tell me how to pass data between activites when working with api and Json. 我应该在Myadpater类的OnclickListener中传递什么字符串以在WebView中获取描述数据。应使用Description。在putextra方法中传递的字符串是什么?或者通常请告诉我在使用api和Json时如何在活动之间传递数据。

After getting data from your adapter 从适配器获取数据后

Take the instance of your object which you want to send and add OR set whatever the properties you want : 以您要发送的对象实例为例,并添加或设置所需的任何属性:

//ListItem listItem = new ListItem();
ListItem listItem = listItems.get(position);

Then put extra like below when you want to send: 然后,当您要发送邮件时,请在下面加上其他内容:

Intent intent=new Intent(context, ArticleActivity.class);
intent.putExtra("listItem", listItem);
context.startActivity(intent);

Retrieve it in your ArticleActivity onCreate method get those extras like: 在您的ArticleActivity onCreate方法中检索它,获得类似以下的附加功能:

ListItem listItem = (ListItem) getIntent().getSerializableExtra("listItem");

Here you can get all the properties from that listItem object 在这里,您可以从该listItem对象获取所有属性。

For example to get description: 例如获取描述:

String description = listItem.getDes();

And note that your class should be implements Serializable: 并注意您的类应实现Serializable:

class ListItem implements Serializable {

} 

Hope it helps. 希望能帮助到你。

@Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        ListItem listItem=listItems.get(position);

        holder.headText.setText(listItem.getHead());
        holder.desText.setText(listItem.getDes());
        holder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                Intent intent=new Intent(context,ArticleActivity.class);
                intent.putExtra("description",);
                context.startActivity(intent);
            }
        });

      // Picasso.with(context).load(R.drawable.netfix).resize(900,300).into(holder.imageView);

    }

Here you have intent.putExtra("description",); 在这里,您有intent.putExtra("description",); where you can pass listItem.getDes() like this intent.putExtra("description", listItem.getDes()); 在这里可以通过listItem.getDes()这样intent.putExtra("description", listItem.getDes()); and ListItem listItem=(ListItem) listItems.get(position); ListItem listItem=(ListItem) listItems.get(position); this line may need casting. 这条线可能需要浇铸。

finally it will be 最终它将是

@Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        ListItem listItem=listItems.get(position);

        holder.headText.setText(listItem.getHead());
        holder.desText.setText(listItem.getDes());
        holder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                Intent intent=new Intent(context,ArticleActivity.class);
                intent.putExtra("description",listItem.getDesc());
                context.startActivity(intent);
            }
        });

      // Picasso.with(context).load(R.drawable.netfix).resize(900,300).into(holder.imageView);

    }

In the activity where you have webview. 在具有Web视图的活动中。 Use this to get back the data passed over intent Intent intent = getIntent(); String description= intent.getStringExtra('description'); 使用它来获取通过intent传递的数据Intent intent = getIntent(); String description= intent.getStringExtra('description'); Intent intent = getIntent(); String description= intent.getStringExtra('description'); // now you have your data here. //现在您在这里有了数据。

Enjoy :) 请享用 :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在recyclerview中单击项目时获取数据 - get the data when an Item is clicked in recyclerview 在Firebase RecyclerView Cardview中单击项目时如何打开详细信息活动 - How to open a details activity when an item is clicked in Firebase RecyclerView Cardview 将RecyclerView CardView单击项目数据传递给活动 - Passing RecyclerView CardView Clicked Item Data To Activity 单击第一个 RecyclerView 中的项目时,如何将数据从一个 RecyclerView 流向另一个 RecyclerView? - How to flow Data from One RecyclerView to Another RecyclerView when an item in first RecyclerView is clicked? 单击recyclerview上的项目时的多个数据 - Multiple data when clicked item on recyclerview 如何从 recyclerView 中的项目获取数据并在 editTexts 上的不同活动中查看它 - How to get data from an item in a recyclerView and view it in a different activity on editTexts 在 webview 中单击 div 时如何完成活动 - How to finish an activity when a div is clicked in webview 如何在Android RecyclerView中获取单击项的文本 - How to get the text of clicked item in android recyclerview 如何在RecyclerView中获取被单击项的位置 - How to get position of clicked item in RecyclerView 当我点击一个recyclerview项目时,如何从一个片段移动到一个新的活动? - how to move from a fragment to a new activity when i clicked an item of recyclerview?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM