2016-03-25 11 views
2

が、私はそれをクリックして、それはそれまでに取得し、右のgetText()メソッドを示していますが、SetTextメソッドが動作していない...ここでリサイクラービューの子ビューonclickのテキストを変更するにはどうすればよいですか?

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)); 
       } 
      } 
     }); 

は、アダプタクラスです:

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; 
    } 
} 

答えて

0

問題が終了したのは、私が次のリストを渡したことです。更新時にdbから新しいフォローを取得することは決してありませんでした。更新は起こっていました。データベースから次のListを再度取得して、リストをcontainsメソッドに戻していた新しいメソッドのように、更新リストをチェックする必要がありました。

db.grabFollowersList(); 
1

dbUsersListは更新されていません。通知データセットの変更後にユーザオブジェクトをdbUsersListで確認してください。

+0

私はあなたが何を意味するのか分かりませんか? dbUsersListが正しく更新されていますが、私がこれを持っている唯一の問題は、setTextメソッドが呼び出されないということです。何故か、私が何らかの理由でリフレッシュすると思われる場合、ビューのテキストを設定しようとしたとき子ボタンの表示 – Lion789

+0

それをデバッグしてチェックしてください – KDeogharkar

+0

いいですよ、何が起こっていたのかはまったく違っていましたが、あなたは私に考えさせました! – Lion789

関連する問題