如何制作Recyclerview& Cardview onClick从服务器获取同步数据 [英] how to make Recyclerview & Cardview onClick fetch syncronized data from server

查看:39
本文介绍了如何制作Recyclerview& Cardview onClick从服务器获取同步数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对我的recyclerview和cardview有疑问.情况是这样的: 1.我有3个值(名称,图像,描述)的数据库 2.在我的活动中,我已经执行了recyclerview和cardview的操作,它们仅显示图像和图像名称.

i have some question with my recyclerview and cardview. This is the cases : 1. I've database with 3 values (name, image, description) 2. In my activity, i've recyclerview and cardview, they only show an image and the name of image.

这是我的活动:

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

This is my 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张图片,如何使该cardview可点击并使用户进入新活动,该活动显示带有该图片的标题的图片.我在这里阅读了一些问题,例如将RecyclerView CardView点击的项目数据传递给活动,但我不知道如何实现我的代码.每个答案对我都很有帮助.

My question is, if in my activity have 2 image on cardview from server, how to make that cardview clickable and take user to new activity who show an image with the decription of the image. I have read some question in here like Passing RecyclerView CardView Clicked Item Data To Activity but I don't know to implements to my code. Every answer is very helpful for me.

预先感谢

推荐答案

在您的onBindViewHolder-

In your 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);


            }
        });

在下一个活动中获取URL并显示完整图像.

Get the URL in your next activity and display the full image.

这篇关于如何制作Recyclerview&amp; Cardview onClick从服务器获取同步数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆