[英]how to get data into webView activity when recyclerView Item is clicked
这是适配器类
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);
}
}
}
这是主要活动
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活动
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;
}*/
}
我应该在Myadpater类的OnclickListener中传递什么字符串以在WebView中获取描述数据。应使用Description。在putextra方法中传递的字符串是什么?或者通常请告诉我在使用api和Json时如何在活动之间传递数据。
从适配器获取数据后
以您要发送的对象实例为例,并添加或设置所需的任何属性:
//ListItem listItem = new ListItem();
ListItem listItem = listItems.get(position);
然后,当您要发送邮件时,请在下面加上其他内容:
Intent intent=new Intent(context, ArticleActivity.class);
intent.putExtra("listItem", listItem);
context.startActivity(intent);
在您的ArticleActivity onCreate方法中检索它,获得类似以下的附加功能:
ListItem listItem = (ListItem) getIntent().getSerializableExtra("listItem");
在这里,您可以从该listItem对象获取所有属性。
例如获取描述:
String description = listItem.getDes();
并注意您的类应实现Serializable:
class ListItem implements Serializable {
}
希望能帮助到你。
@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);
}
在这里,您有intent.putExtra("description",);
在这里可以通过listItem.getDes()
这样intent.putExtra("description", listItem.getDes());
和ListItem listItem=(ListItem) listItems.get(position);
这条线可能需要浇铸。
最终它将是
@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);
}
在具有Web视图的活动中。 使用它来获取通过intent传递的数据Intent intent = getIntent(); String description= intent.getStringExtra('description');
Intent intent = getIntent(); String description= intent.getStringExtra('description');
//现在您在这里有了数据。
请享用 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.