私はrecyclerview内に一連のcardviewを持っています。各カードビューにはボタンが含まれています。ボタンをクリックすると、カードビューの子を再表示することになっています。しかし、それは次のカードビューで同じIDを持つ子供を隠すことを主張します。私はこれを引き起こしているのか、何を探しているのか全く分かりません。recyclerviewのボタンのOnClickListenerが間違った表示になっています
package in.kaluru.app.adapters;
import android.content.Context;
import android.content.SharedPreferences;
import android.databinding.DataBindingUtil;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import in.kaluru.app.BR;
import in.kaluru.app.R;
import in.kaluru.app.databinding.RowEntryBinding;
import in.kaluru.app.models.EntryModel;
import in.kaluru.app.views.MainActivityFragment;
/**
* Created by ritvik on 22/4/16.
*/
public class EntryAdapter extends RecyclerView.Adapter<EntryAdapter.EntryViewHolder>{
public static List<EntryModel> mEntries;
public View v;
public Context mContext;
public EntryAdapter(List<EntryModel> mEntries, Context mContext) {
this.mEntries = mEntries;
this.mContext = mContext;
}
public static class EntryViewHolder extends RecyclerView.ViewHolder {
private RowEntryBinding binding;
public EntryViewHolder(View rowView) {
super(rowView);
binding = DataBindingUtil.bind(rowView);
}
public RowEntryBinding getBinding() {
return binding;
}
}
@Override
public EntryViewHolder onCreateViewHolder(final ViewGroup parent, int type) {
v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_entry, parent, false);
v.findViewById(R.id.image_meta).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(parent.getContext(),
"This will open up a map showing nearby " +
"pictures with markers and have this one selected. Also still WIP.",
Toast.LENGTH_LONG).show();
}
});
v.findViewById(R.id.fixed).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
v.findViewById(R.id.note_section).setVisibility(View.VISIBLE);
view.setVisibility(View.GONE);
}
});;
v.findViewById(R.id.cancel_fixed).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
v.findViewById(R.id.note_section).setVisibility(View.GONE);
v.findViewById(R.id.fixed).setVisibility(View.VISIBLE);
}
});
EntryViewHolder holder = new EntryViewHolder(v);
return holder;
}
@Override
public void onBindViewHolder(EntryViewHolder holder, int position) {
final EntryModel entry = mEntries.get(position);
v.findViewById(R.id.send_fixed).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String uuid = entry.uuid;
RequestQueue queue = Volley.newRequestQueue(mContext);
String url = "https://kaluru.in/fixed";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
entry.setFixed(true);
notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Response", "That didn't work!");
Log.e("VolleyError", error.toString());
}
}){
@Override
public Map<String, String> getParams() {
Map<String, String> mParams = new HashMap<String, String>();
mParams.put("uuid", uuid);
mParams.put("note", ((EditText) v.findViewById(R.id.note)).getText().toString());
return mParams;
}
};
queue.add(stringRequest);
}
});
holder.getBinding().setVariable(BR.entry, entry);
holder.getBinding().executePendingBindings();
}
@Override
public int getItemCount() {
return mEntries.size();
}
}
ビット私はここに私のアダプタコードは(すべてがここで起こる)ですが、また、私は非常によく、このいずれかを説明していないかなり確信していますボタンが入っていたカードである "Locality unavailable"というカードの下に、 "Note"、 "Send"、そして "Cancel"と書かれている部分が実際にはさまれているはずです。
を 'v'があるべきローカル変数、 'onBindViewHolder()'の 'v = holder.itemView' – tynn
が表示されます。私はとても長い時間がかかりましたが、申し訳ありません。私はそれに今日行くと、それが動作する場合、あなたは答えを受け入れている。御時間ありがとうございます。 –