2016-03-25 7 views
2

Ich habe es angeklickt und es wird auf sie auf und zeigt die rechte getText() -Methode, aber die setText Methode nicht funktioniert ...Wie ändere ich den Text der Kindansicht beim Anklicken der Recycleransicht?

userAdapter.setOnEntryClickListener(new UserAdapter.OnEntryClickListener() { 
      @Override 
      public void onEntryClick(View view, int position) { 
       DatabaseUser user = dbUsersList.get(position); 
        TextView clickedView = (TextView) view.findViewById(R.id.userAdapterFollowBtn); 
       if(view == clickedView) { 
        if (clickedView.getText().equals("following")) { 

         Log.d(Constants.DEBUG, " THE CLICK VIEW IS " + clickedView.getText()); 
         //APPLY Following 
         String txtFollow = "follow"; 
         clickedView.setText(txtFollow); 
         if (user.getIsChanged() == 0) { 
          user.setIsChanged(1); 
         } else { 
          user.setIsChanged(0); 
         } 
         user.setIsType(3); 
         db.updateFollow(user); 

         userAdapter.notifyDataSetChanged(); 
        } else { 

         clickedView.setText("following"); 
         if (user.getIsChanged() == 0) { 
          user.setIsChanged(1); 
         } else { 
          user.setIsChanged(0); 
         } 
         user.setIsType(0); 
         db.updateFollow(user); 

         userAdapter.notifyDataSetChanged(); 
        } 
       } else { 
        Toast.makeText(getApplicationContext(), user.getUsername() + " is selected!", Toast.LENGTH_SHORT).show(); 
        takeToUserProfile(dbUsersList.get(position)); 
       } 
      } 
     }); 

Hier ist die Adapterklasse:

public class UserAdapter extends RecyclerView.Adapter<UserAdapter.MyViewHolder> { 

    private List<DatabaseUser> dbUsersList, followingList; 
    private DatabaseHelper db; 
    private Context context; 
    private Typeface typeFace, italicTypeface, boldTypeface; 


    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 
     public TextView userAdapterUsername, userAdapterFollowBtn; 
     public ImageView userAdapterUserPicture; 


     public MyViewHolder(View view) { 
      super(view); 
      userAdapterUsername = (TextView) view.findViewById(R.id.userAdapterUsername); 
      userAdapterFollowBtn = (TextView) view.findViewById(R.id.userAdapterFollowBtn); 
      userAdapterUserPicture = (ImageView) view.findViewById(R.id.userAdapterUserPicture); 
      Log.d(Constants.DEBUG, "IN MY VIEW HOLDER"); 

      view.setOnClickListener(this); 
      userAdapterFollowBtn.setOnClickListener(this); 

     } 

     @Override 
     public void onClick(View v) { 
      if (mOnEntryClickListener != null) { 
       Log.d(Constants.DEBUG, "IN On click"); 
       mOnEntryClickListener.onEntryClick(v, getAdapterPosition()); 


      } 
     } 
    } 
    private static OnEntryClickListener mOnEntryClickListener; 

    public interface OnEntryClickListener { 
     void onEntryClick(View view, int position); 
    } 

    public void setOnEntryClickListener(OnEntryClickListener onEntryClickListener) { 
     mOnEntryClickListener = onEntryClickListener; 
    } 


    public UserAdapter(Context mContext, List<DatabaseUser> usersList, List<DatabaseUser> passedFollowing, Typeface myTypeface, Typeface myTypefaceItalic, Typeface myTypefaceBold) { 
     context = mContext; 
     dbUsersList = usersList; 
     followingList = passedFollowing; 
     typeFace = myTypeface; 
     italicTypeface = myTypefaceItalic; 
     boldTypeface = myTypefaceBold; 
     Log.d(Constants.DEBUG, "IN MY User ADAPTER CONSTRUCTOR"); 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.follow_item, parent, false); 
     Log.d(Constants.DEBUG, "RETURN ITEM VIEW HOLDER"); 


     return new MyViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(final MyViewHolder holder, int position) { 


     DatabaseUser user = dbUsersList.get(position); 


     holder.userAdapterUsername.setTypeface(boldTypeface); 

     holder.userAdapterUsername.setText(user.getUsername()); 

     final int pos = getItemViewType(position); 
     //TODO Create pic link 

     if(containsId(dbUsersList.get(pos), followingList)) { 
      //Then show following 
      holder.userAdapterFollowBtn.setText("following"); 


     } else { 
      //show follow 
      holder.userAdapterFollowBtn.setText("follow"); 
     } 



     String userspic = dbUsersList.get(pos).getPicture(); 
     if(userspic == null) { 
      //SET DEFAULT OR PUT DEFAULT IN XML AND DO NOTHING IT SHOULD SHOW DEFAULT PIC 
     } else { 
      //TODO setupUser Pic 
      String img1 = "http://www.hindustantimes.com/Images/popup/2015/6/kungfu2.jpg"; 
      Picasso.with(context).load(img1).transform(new RoundedTransformation()).into(holder.userAdapterUserPicture); 

     } 

    } 

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

    public static boolean containsId(DatabaseUser currentUser, List<DatabaseUser> list) { 
     for (DatabaseUser object : list) { 
      if (currentUser.getUserId().equals(object.getUserId())) { 
       return true; 
      } 
     } 
     return false; 
    } 

    @Override 
    public int getItemViewType(int position) { 
     return position; 
    } 
} 

Antwort

0

Was am Ende das Problem war, ist, dass ich in der folgenden Liste übergeben hatte, also habe ich nie aufgerufen, um die neue Folge aus dem db on Update zu greifen. Das Update wurde gerade ausgeführt. Ich musste einfach die folgendeListe von der Datenbank abholen, um eine aktualisierte Liste zu haben, um sie zu überprüfen, wie in einer neuen Methode, die die Liste zurück an die contains-Methode übergab.

db.grabFollowersList(); 
1

Ihre wird nicht aktualisiert. Bitte überprüfen Sie Ihr Benutzerobjekt in nach Benachrichtigung Datensatzänderung.

+0

Ich bin mir nicht sicher, ich verstehe, was du meinst? dbUsersList wird korrekt aktualisiert, das einzige Problem, das ich damit habe, ist, dass die setText-Methode nicht aufgerufen wird, was ich nicht verstehe, warum oder was ich falsch mache, wenn ich versuche, den Text der Ansicht zu setzen, wenn ich irgendwie aktualisieren soll das Kind Knopfansicht – Lion789

+0

Debuggen Sie es und überprüfen Sie – KDeogharkar

+0

Guter Anruf, was los war, war völlig anders, aber Sie haben mich denken! – Lion789

Verwandte Themen