Ich versuche, meine Daten vom Server abzurufen und dann mit Hilfe von RecyclerView
anzuzeigen. Meine RecyclerView
enthält 4 Schaltflächen und jede Schaltfläche sendet die Daten an verschiedene Tabellen. Das ist, was ich versucht:Nur das letzte Element der Recycler-Ansicht wird nach dem onclicklistener angezeigt
public class QuoteAdapter extends RecyclerView.Adapter<QuoteAdapter.ViewHolder> {
List<QuoteList> qItems;
String sQuote,sName,sEmail;
public QuoteAdapter(List<QuoteList> qItems) {
this.qItems = qItems;
}
@Override
public QuoteAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.fetch_list, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final QuoteAdapter.ViewHolder holder, int position) {
final QuoteList codeListBeans = qItems.get(position);
final Background background = new Background();
holder.tv_quote.setText(codeListBeans.getQuote());
holder.tv_name.setText(codeListBeans.getName());
holder.tv_email.setText(codeListBeans.getEmail());
sQuote=holder.tv_quote.getText().toString();
sName=holder.tv_name.getText().toString();
sEmail=holder.tv_email.getText().toString();
holder.btn_other.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
url = "http://velapanti.esy.es/quotation/other/add.php";
background.execute(sQuote, sEmail, sName);
}
});
holder.btn_love.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
url = "http://velapanti.esy.es/quotation/love/add.php";
background.execute(sQuote, sEmail, sName);
}
});
holder.btn_mot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
url = "http://velapanti.esy.es/quotation/motivation/add.php";
background.execute(sQuote, sEmail, sName);
}
});
holder.btn_frnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
url = "http://velapanti.esy.es/quotation/friends/add.php";
background.execute(sQuote, sEmail, sName);
}
});
}
class ViewHolder extends RecyclerView.ViewHolder {
public TextView tv_name, tv_quote, tv_email;
public Button btn_other, btn_mot, btn_love, btn_frnd;
public ViewHolder(View itemView) {
super(itemView);
tv_quote = (TextView) itemView.findViewById(R.id.tv_quote);
tv_name = (TextView) itemView.findViewById(R.id.tv_name);
tv_email = (TextView) itemView.findViewById(R.id.tv_email);
btn_frnd = (Button) itemView.findViewById(R.id.btn_frnd);
btn_love = (Button) itemView.findViewById(R.id.btn_love);
btn_mot = (Button) itemView.findViewById(R.id.btn_mot);
btn_other = (Button) itemView.findViewById(R.id.btn_other);
}
}
@Override
public int getItemCount() {
return qItems.size();
}
class Background extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
if (isConnection()) {
super.onPreExecute();
progressDialog.show();
} else {
showConnectionErrorDialog();
startActivity(getIntent());
}
}
@Override
protected String doInBackground(String... strings) {
sQuote = strings[0];
sEmail = strings[1];
sName = strings[2];
try {
URL openUrl = new URL(url);
HttpURLConnection httpURLConnection = (HttpURLConnection) openUrl.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
OutputStream OS = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8"));
String data = URLEncoder.encode("quote", "UTF-8") + "=" + URLEncoder.encode(sQuote, "UTF-8")
+ "&" +
URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(sEmail, "UTF-8")
+ "&" +
URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(sName, "UTF-8");
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
OS.close();
InputStream IS = httpURLConnection.getInputStream();
IS.close();
httpURLConnection.disconnect();
return "Quotation Added";
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onPostExecute(String result) {
progressDialog.dismiss();
Snackbar.make(layout, result, Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
}
}
Das Problem, das ich bin vor, wenn ich die Daten aus der letzten Zeile bewegt, unabhängig von der Zeile in der Tabelle auf jeder Schaltfläche klicken, von dem ich die Schaltfläche dh klicken, wenn ich auf die In einer beliebigen Zeile werden die Daten aus der letzten Zeile gesendet, aber nicht aus der Zeile, zu der die Schaltfläche gehört.