这是适配器类
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);
以您的关节化方法检索它,以获取那些额外的东西:
ListItem listItem = (ListItem) getIntent().getSerializableExtra("listItem");
在这里您可以从该ListItem对象获取所有属性
例如获取描述:
String description = listItem.getDes();
,请注意,您的课程应序列化:
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",);
,可以像此intent.putExtra("description", listItem.getDes());
一样通过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);
}
在您拥有WebView的活动中。用它来恢复通过意图Intent intent = getIntent();
String description= intent.getStringExtra('description');
传递的数据//现在您在这里有数据。
享受:)