2017-12-14 25 views
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); 
     } 
     } 
    } 

답변

1

1) 먼저 문제를 볼보기

당신은 다른 부분에 다른 뷰에 대한 가시성 코드를 삽입 할 필요가 암호.

ex. 다른 부분에 4 줄을 추가했습니다. 확인해주십시오. 당신 당 요구 사항을 추가하십시오.

+0

그러나이 if-else 조건에서는 getter 및 setter 메소드에서 superHero.getStatus(); 데이터를 가져옵니다. 그리고 str_status가 삭제되면 가시성은 사라지고 str_status가 삭제되면 두 조건이 모두 실행됩니다. – user6734679

+0

다른 조건을 유지해야 할 필요가 있기 때문에 일단보기가 사라지면 자동으로 표시되지 않습니다. –

+0

내보기로 올바른 if-else 조건을 확인했지만 문제가 있습니다. – user6734679