我对我的recyclerview和cardview有一些疑问。这是案例: 1.我的数据库有3个值(名称,图像,描述) 2.在我的活动中,我有recyclerview和cardview,它们只显示图像和图像名称。
这是我的活动:
package com.example.mrm.myapplication;
public class Child_Tab1 extends Activity {
List<GetDataAdapter> GetDataAdapter1;
RecyclerView recyclerView;
RecyclerView.LayoutManager recyclerViewlayaoutManager;
RecyclerView.Adapter recyclerViewadapter;
String GET_JSON_DATA_HTTP_URL = "http://www.kinandayu.com/image_content/getAllImage.php";
String JSON_IMAGE_TITLE_NAME = "name";
String JSON_IMAGE_URL = "image";
JsonArrayRequest jsonArrayRequest;
RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.child_tab_1);
GetDataAdapter1 = new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.rv1);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
SpacesItemsDecoration decoration = new SpacesItemsDecoration(4);
recyclerView.addItemDecoration(decoration);
ActionBarTitleGravity();
JSON_DATA_WEB_CALL();
}
private void ActionBarTitleGravity() {
ActionBar actionbar = getActionBar();
TextView textview = new TextView(getApplicationContext());
LayoutParams layoutparams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
textview.setLayoutParams(layoutparams);
textview.setText("Kinandayu");
textview.setTextColor(Color.parseColor("#00acc1"));
textview.setGravity(Gravity.START);
textview.setTextSize(20);
actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionbar.setCustomView(textview);
}
private void JSON_DATA_WEB_CALL() {
jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL, new Response.Listener<JSONArray>() {
@Override
public void onResponse (JSONArray response) {
JSON_PARSE_DATA_AFTER_WEBCALL(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonArrayRequest);
}
public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array) {
for (int i = 0; i<array.length(); i++) {
GetDataAdapter GetDataAdapter2 = new GetDataAdapter();
JSONObject json = null;
try {
json = array.getJSONObject(i);
GetDataAdapter2.setImageTitleNamee(json.getString(JSON_IMAGE_TITLE_NAME));
GetDataAdapter2.setImageServerUrl("http://" + json.getString(JSON_IMAGE_URL));
} catch (JSONException e) {
e.printStackTrace();
}
GetDataAdapter1.add(GetDataAdapter2);
}
recyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1, this);
recyclerView.setAdapter(recyclerViewadapter);
}
}
这是我的RecyclerViewAdapter.java
package com.example.mrm.myapplication;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
Context context;
List<GetDataAdapter> getDataAdapter;
ImageLoader imageLoader1;
public RecyclerViewAdapter(List<GetDataAdapter> getDataAdapter, Context context){
super();
this.getDataAdapter = getDataAdapter;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent,false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder Viewholder, int position) {
GetDataAdapter getDataAdapter1 = getDataAdapter.get(position);
imageLoader1 = ServerImageParseAdapter.getInstance(context).getImageLoader();
imageLoader1.get(getDataAdapter1.getImageServerUrl(), ImageLoader.getImageListener
(Viewholder.networkImageView, R.drawable.placeholder, android.R.drawable.ic_dialog_alert
));
Viewholder.networkImageView.setImageUrl(getDataAdapter1.getImageServerUrl(), imageLoader1);
Viewholder.ImageTitleNameView.setText(getDataAdapter1.getImageTitleName());
}
@Override
public int getItemCount() {
return getDataAdapter.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public TextView ImageTitleNameView;
public NetworkImageView networkImageView;
public ViewHolder(View itemView) {
super(itemView);
ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item);
networkImageView = (NetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView1);
}
}
}
我的问题是,如果在我的活动中有来自服务器的cardview上的2张图像,如何使该卡片视图可点击并将用户带到显示带有图像描述的图像的新活动。我在这里读过一些问题,如Passing RecyclerView CardView Clicked Item Data To Activity,但我不知道如何实现我的代码。每个答案对我都很有帮助。
提前致谢
答案 0 :(得分:0)
在你的onBindViewHolder中 -
Viewholder.networkImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context, NextActivity.class);
i.putExtra("URL", getDataAdapter1.getImageServerUrl());
context.startActivity(i);
}
});
在下一个活动中获取网址并显示完整图片。