0
데이터가 getter 및 setter 메소드에서 가져 오는 RecyclerView custum 어댑터를 사용하고 있습니다. 그 위치에 있으면 모든보기 가시성이 View.GONE이됩니다. 그렇지 않으면 모든보기가 해당 항목에 표시됩니다. 언젠가 그것은 아래의 코드 조건으로 작동하지 않습니다. 또 다른 문제는 버튼을 클릭하면 다른 뷰에 영향을 미친다는 것입니다. 아래 코드를 확인하십시오. 그리고 개선을 위해 무엇을해야하는지 말해주세요. 이 문제를 해결하기 위해 getTag() 및 setTag() 메서드를 사용해야합니까? 상태 변경 후에는 눈에 보이는 둘 필요가 있으므로 다른 다음보기 것 볼 수 없습니다에 삭제에서 경우 때문에재활용보기에서 getTag() 및 setTag() 사용 방법
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
private static final String url1 = "************************.php";
private static final String KEY_MATRI_ID_TO="matriID_to";
private static final String KEY_MATRI_ID_BY="matriID_by";
SessionManager session;
public String matri_id_to, matri_id_by, str_gender;
String str_status,str_EI;
//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_shortlist_me, parent, false);
// Session class instance
session = new SessionManager(context);
session.checkLogin();
// get user data from session
HashMap<String, String> user = session.getUserDetails();
matri_id_by = user.get(SessionManager.KEY_EMAIL);
str_gender = user.get(SessionManager.KEY_GENDER);
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);
holder.textViewId.setText(superHero.getMglId());
str_status = superHero.getStatus();
if(str_status.equalsIgnoreCase("deleted"))
{
holder.tvCommunity.setText("This profile has been deleted");
holder.tvCommunity.setTextColor(Color.RED);
holder.Community.setVisibility(View.GONE);
holder.AgeHeight.setVisibility(View.GONE);
holder.Occupation.setVisibility(View.GONE);
holder.Income.setVisibility(View.GONE);
holder.shortlist_on.setVisibility(View.GONE);
holder.imageView.setVisibility(View.GONE);
holder.tvAgeHeight.setVisibility(View.GONE);
holder.tvIncome.setVisibility(View.GONE);
holder.tvShortlistOn.setVisibility(View.GONE);
holder.tvOccupation.setVisibility(View.GONE);
holder.btnEI.setVisibility(View.GONE);
holder.btnViewProfile.setVisibility(View.GONE);
}
else
{
holder.AgeHeight.setText(superHero.getAge()+"/"+superHero.getAgeHeight());
holder.Community.setText(superHero.getCommunity()+"/"+superHero.getCaste());
holder.Occupation.setText(superHero.getOccupation());
holder.Income.setText(superHero.getIncome());
holder.shortlist_on.setText(superHero.getShortlisted_on());
holder.btnEI.setText(superHero.getExpress_Intrest());
//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));
holder.imageView.setImageUrl(superHero.getImageUrl(), imageLoader);
}
str_EI = superHero.getExpress_Intrest();
if(str_EI.toString().equalsIgnoreCase("Accepted")) {
holder.btnEI.setText(str_EI);
holder.btnEI.setBackgroundColor(Color.parseColor("#FF045B49"));
holder.btnEI.setEnabled(false);
}
else if(str_EI.toString().equalsIgnoreCase("Reject")){
holder.btnEI.setText(str_EI);
holder.btnEI.setBackgroundColor(Color.parseColor("#FF045B49"));
holder.btnEI.setEnabled(false);
}
else if(str_EI.toString().equalsIgnoreCase("Declined")){
holder.btnEI.setText(str_EI);
holder.btnEI.setBackgroundColor(Color.parseColor("#FF045B49"));
holder.btnEI.setEnabled(false);
}
else if(str_EI.toString().equalsIgnoreCase("Pending..")){
holder.btnEI.setText(str_EI);
holder.btnEI.setBackgroundColor(Color.parseColor("#FF045B49"));
holder.btnEI.setEnabled(false);
}
else
{
holder.btnEI.setText(str_EI);
}
holder.btnViewProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent n = new Intent(holder.itemView.getContext(),BlankActivity.class);
String str_id = holder.textViewId.getText().toString();
n.putExtra("ID",str_id);
holder.itemView.getContext().startActivity(n);
}
});
holder.btnEI.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
superHero.setExpress_Intrest("Wait...");
holder.btnEI.setText(superHero.getExpress_Intrest());
matri_id_to = superHero.getMglId();
holder.expressInterest(position);
}
});
}
@Override
public int getItemCount() {
return superHeroes.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
//Views
public NetworkImageView imageView;
public TextView textViewId;
public TextView AgeHeight,tvAgeHeight;
public TextView Community, tvCommunity;
public TextView Occupation, tvOccupation;
public TextView Income, tvIncome;
public TextView shortlist_on, tvShortlistOn;
public Button btnViewProfile;
public Button btnEI;
//Initializing Views
public ViewHolder(final View itemView) {
super(itemView);
imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
textViewId = (TextView) itemView.findViewById(R.id.textViewId);
tvAgeHeight = (TextView) itemView.findViewById(R.id.tvAgeHeight);
AgeHeight = (TextView) itemView.findViewById(R.id.AgeHeight);
tvCommunity = (TextView) itemView.findViewById(R.id.tvCommunity);
Community = (TextView) itemView.findViewById(R.id.Community);
tvOccupation = (TextView) itemView.findViewById(R.id.tvOccupation);
Occupation = (TextView) itemView.findViewById(R.id.Occupation);
tvIncome = (TextView) itemView.findViewById(R.id.tvIncome);
Income = (TextView) itemView.findViewById(R.id.Income);
tvShortlistOn = (TextView) itemView.findViewById(R.id.tvShortlistOn);
shortlist_on = (TextView) itemView.findViewById(R.id.shortlistOn);
btnViewProfile = (Button) itemView.findViewById(R.id.viewProfile);
btnEI = (Button) itemView.findViewById(R.id.sendEI);
}
public void expressInterest(final int position) {
StringRequest stringRequest1 = new StringRequest(Request.Method.POST, url1, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.trim().equalsIgnoreCase("success")) {
superHeroes.get(position).setExpress_Intrest("Pending..");
notifyDataSetChanged();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, error.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put(KEY_MATRI_ID_BY,matri_id_by);
params.put(KEY_MATRI_ID_TO,matri_id_to);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(context);
requestQueue.add(stringRequest1);
}
}
}
그러나이 if-else 조건에서는 getter 및 setter 메소드에서 superHero.getStatus(); 데이터를 가져옵니다. 그리고 str_status가 삭제되면 가시성은 사라지고 str_status가 삭제되면 두 조건이 모두 실행됩니다. – user6734679
다른 조건을 유지해야 할 필요가 있기 때문에 일단보기가 사라지면 자동으로 표시되지 않습니다. –
내보기로 올바른 if-else 조건을 확인했지만 문제가 있습니다. – user6734679