2016-03-21 9 views
2

Geri dönüşü kullanarak geri bildirimde bulunan, her kartta tıklatılan, tıklama sayısını sayan ve görüntüleyen bir düğmeyle, voleybolu kullanarak verileri getiren ve geri bildirim göstererek görüntülenen uygulama üzerinde çalışıyorum. Bu karttaki bir metin görünümünde (düğme gibi instagram gibi). Şimdi, tıklatıldığında, tıklamaların mysql veritabanında depolanmasını da istiyorum. Herkes ben bu nasıl gidebiliriz bana yardımcı LÜTFEN olabilir? bu benim kodudurMysql'den veriyi volt kullanarak butona basarak geri dönüştürün.

KART ADAPTÖRÜ

import android.content.Context; 
import android.media.Image; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import com.android.volley.toolbox.ImageLoader; 
import com.android.volley.toolbox.NetworkImageView; 
import org.w3c.dom.Text; 
import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Belal on 11/9/2015. 
*/ 
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { 
    //Imageloader to load image 
    private ImageLoader imageLoader; 
    private Context context; 

    //List to store all superheroes 
    List<SuperHero> superHeroes; 

    //Constructor of this class 
    public CardAdapter(List<SuperHero> superHeroes, Context context) { 
     super(); 
     //Getting all superheroes 
     this.superHeroes = superHeroes; 
     this.context = context; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.superheroes_list, parent, false); 
     ViewHolder viewHolder = new ViewHolder(v); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(final ViewHolder holder, final int position) { 
     //Getting the particular item from the list 
      final SuperHero superHero = superHeroes.get(position); 

     //Loading image from url 
     imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader(); 
     imageLoader.get(superHero.getImageUrl(), ImageLoader.getImageListener(holder.imageView, R.drawable.image, android.R.drawable.ic_dialog_alert)); 

     //Showing data on the views 
     holder.imageView.setImageUrl(superHero.getImageUrl(), imageLoader); 
     holder.textViewName.setText(superHero.getName()); 
     holder.textViewPublisher.setText(superHero.getPublisher()); 
     holder.textViewLikes.setText(superHero.getLikes()); 



     holder.custom_button.setOnClickListener(new View.OnClickListener() { 
      int count; 


      @Override 
      public void onClick(View v) { 

       count = 0; 

       superHeroes.get(position).setCount(superHeroes.get(position).getCount() + 1); 
       holder.txtCount.setText(superHeroes.get(position).getCount() + ""); 


      } 

     }); 



    } 
    @Override 
    public int getItemCount() { 
     return superHeroes.size(); 
    } 

    class ViewHolder extends RecyclerView.ViewHolder { 
     //Views 
     public NetworkImageView imageView; 
     public TextView textViewName; 
     public TextView textViewPublisher; 
     public TextView textViewLikes; 
     public TextView txtCount; 
     public ImageButton custom_button; 

     //Initializing Views 
     public ViewHolder(View itemView) { 
      super(itemView); 
      imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero); 
      textViewName = (TextView) itemView.findViewById(R.id.textViewName); 
      textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher); 
      textViewLikes = (TextView) itemView.findViewById(R.id.textViewlikes); 
      txtCount = (TextView) itemView.findViewById(R.id.txtCount); 
      custom_button = (ImageButton) itemView.findViewById(R.id.custom_button); 
     } 
    } 
} 

Sana ne olabilir anlamanıza yardımcı olacak bir senaryo üstlenecek

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.View; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import android.widget.Toast; 


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.JsonArrayRequest; 
import com.android.volley.toolbox.StringRequest; 
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.HashMap; 
import java.util.List; 
import java.util.Map; 

public class MainActivity extends AppCompatActivity implements RecyclerView.OnScrollChangeListener { 



    //Creating a List of superheroes 
    private List<SuperHero> listSuperHeroes; 

    //Creating Views 
    private RecyclerView recyclerView; 
    private RecyclerView.LayoutManager layoutManager; 
    private RecyclerView.Adapter adapter; 

    //Volley Request Queue 
    private RequestQueue requestQueue; 
    //The request counter to send ?page=1, ?page=2 requests 
    private int requestCount = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     //Initializing Views 
     recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
     recyclerView.setHasFixedSize(true); 
     layoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 

     //Initializing our superheroes list 
     listSuperHeroes = new ArrayList<>(); 
     requestQueue = Volley.newRequestQueue(this); 

     //Calling method to get data to fetch data 
     getData(); 

     //Adding an scroll change listener to recyclerview 
     recyclerView.setOnScrollChangeListener(this); 

     //initializing our adapter 
     adapter = new CardAdapter(listSuperHeroes, this); 

     //Adding adapter to recyclerview 
     recyclerView.setAdapter(adapter); 


    } 


    //Request to get json from server we are passing an integer here 
    //This integer will used to specify the page number for the request ?page = requestcount 
    //This method would return a JsonArrayRequest that will be added to the request queue 

    private JsonArrayRequest getDataFromServer(int requestCount) { 
     //Initializing ProgressBar 
     final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

     //Displaying Progressbar 
     progressBar.setVisibility(View.VISIBLE); 
     setProgressBarIndeterminateVisibility(true); 

     //JsonArrayRequest of volley 
     JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL + String.valueOf(requestCount), 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         //Calling method parseData to parse the json response 
         parseData(response); 
         //Hiding the progressbar 
         progressBar.setVisibility(View.GONE); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         progressBar.setVisibility(View.GONE); 
         //If an error occurs that means end of the list has reached 
         Toast.makeText(MainActivity.this, "No More Items Available", Toast.LENGTH_SHORT).show(); 
        } 
       }); 

     //Returning the request 
     return jsonArrayRequest; 
    } 



    //This method will get data from the web api 
    private void getData() { 
     //Adding the method to the queue by calling the method getDataFromServer 
     requestQueue.add(getDataFromServer(requestCount)); 
     //Incrementing the request counter 
     requestCount++; 
    } 

    //This method will parse json data 
    private void parseData(JSONArray array) { 
     for (int i = 0; i < array.length(); i++) { 
      //Creating the superhero object 
      SuperHero superHero = new SuperHero(); 
      JSONObject json = null; 
      try { 
       //Getting json 
       json = array.getJSONObject(i); 

       //Adding data to the superhero object 
       superHero.setImageUrl(json.getString(Config.TAG_IMAGE_URL)); 
       superHero.setName(json.getString(Config.TAG_NAME)); 
       superHero.setPublisher(json.getString(Config.TAG_PUBLISHER)); 
       superHero.setLikes(json.getString(Config.TAG_LIKES)); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      //Adding the superhero object to the list 
      listSuperHeroes.add(superHero); 
     } 

     //Notifying the adapter that data has been added or changed 
     adapter.notifyDataSetChanged(); 
    } 




    //This method would check that the recyclerview scroll has reached the bottom or not 
    private boolean isLastItemDisplaying(RecyclerView recyclerView) { 
     if (recyclerView.getAdapter().getItemCount() != 0) { 
      int lastVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition(); 
      if (lastVisibleItemPosition != RecyclerView.NO_POSITION && lastVisibleItemPosition == recyclerView.getAdapter().getItemCount() - 1) 
       return true; 
     } 
     return false; 
    } 

    //Overriden method to detect scrolling 
    @Override 
    public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
     //Ifscrolled at last then 
     if (isLastItemDisplaying(recyclerView)) { 

      //Calling the method getdata again 
      getData(); 
     } 
    } 
} 
+0

sqlite veritabanı kurdunuz mu? gerçekten kolay sadece google it – Shreyans

+0

Sadece veritabanında veriyi veritabanında '' tıklatarak '' içinde yer alan fonksiyonunu çağırın. –

+0

yh zaten bir veritabanı var @Shreyans –

cevap

1

MainActivity burada yapılmalı.

RecyclerView öğe sayısını sahiptir Diyelim ve her öğenin Tablo Card için MySQL database rekor (kayıtlar okunduğunu yerden temsil etmek başka farz isim) temsil eder.

bu Card Table bir column o belirli rekoru sevdim kullanıcı sayısı izlemek için Integer veya Long olarak likes denilen olmalıdır. Bir kullanıcı düğmesine tıklayarak bir kart sever zaman

, true isLiked değişken o kart örneğinin değerini ayarlayın ve MySQL Database yılında Kart Tablo likes sütun sayısını artırmak için belirten API ağ arama yapmak

Bunu gerçekleştirmenin birçok yolu olabilir, uygulama değişiklikleri olarak gereksinimlerinize uyum sağlamanız gerekir.

class Card{ 
    public long id; 
    public boolean isLiked; 
    public long numberOfLikes; 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public boolean isLiked() { 
     return isLiked; 
    } 

    public void setLiked(boolean liked) { 
     isLiked = liked; 
    } 

    public long getNumberOfLikes() { 
     return numberOfLikes; 
    } 

    public void setNumberOfLikes(long numberOfLikes) { 
     this.numberOfLikes = numberOfLikes; 
    } 
} 
+0

onclick içinde bunların hepsini yapmalıyım? @Pankaj Nimgade –

+0

evet, OnClick() –

+0

'daki sayımları artıracak API'ya bir Ağ çağrısı yapabilirsiniz. Her bir 'txtCount' (her karttaki beğeni sayısını gösteren textView) değerini bir dizeye nasıl atayabilirim değişken? @Pankay Nimgade –

İlgili konular