2016-11-27 3 views
0

Ich habe eine Frage mit meinem recyclerview und cardview. Dies sind die Fälle: 1. Ich habe eine Datenbank mit 3 Werten (Name, Bild, Beschreibung) 2. In meiner Aktivität habe ich Recyclerview und Cardview, sie zeigen nur ein Bild und den Namen des Bildes.wie man Recyclerview & Cardview onClick holt synchronisierte Daten vom Server

Dies ist meine Tätigkeit:

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); 
} 
} 

Das ist mein RecyclerViewAdapter.java

ist
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); 
    } 
} 
} 

Meine Frage ist, wenn in meiner Tätigkeit 2 Bild auf cardview vom Server haben, wie man das cardview machen klickbar und Benutzer zu neuer Aktivität, die ein Bild mit der Beschreibung des Bildes zeigen. Ich habe hier eine Frage wie Passing RecyclerView CardView Clicked Item Data To Activity gelesen, aber ich weiß nicht, um meinen Code zu implementieren. Jede Antwort ist sehr hilfreich für mich.

Vielen Dank im Voraus

Antwort

0

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


      } 
     }); 

die URL in Ihrer nächsten Aktivität Holen und das Vollbild angezeigt werden soll.

+0

ok ich werde versuchen, meinen Code –

+0

ist es nicht funktionieren :(Mein Bild kann nicht anklickbar –