如何更改回收站视图的子视图文本?

时间:2016-03-25 05:27:22

标签: android android-recyclerview

我点击了它,它就会启动并显示正确的getText()方法,但是setText方法无效......

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

2 个答案:

答案 0 :(得分:1)

您的SELECT SUBSTRING(PolicyCvg,1,6) AS Policy FROM Relationship WHERE RELATIONSHIP = 'OWNER' AND CLIENT = 'BRAD' SELECT Mode FROM Policy WHERE Policy IN ( SELECT SUBSTRING(PolicyCvg,1,6) AS Policy FROM Relationship WHERE RELATIONSHIP = 'OWNER' AND CLIENT = 'BRAD' ) SELECT Amount,Tax FROM Coverage WHERE Policy IN ( SELECT SUBSTRING(PolicyCvg,1,6) AS Policy FROM Relationship WHERE RELATIONSHIP = 'OWNER' AND CLIENT = 'BRAD' ) 未更新。请在通知数据集更改后检查dbUsersList中的用户对象。

答案 1 :(得分:0)

最终出现问题的是我已经传入了下面的列表,所以我从来没有再次调用从更新后的db中获取新的后续内容。更新正在发生我只需要重新从数据库中获取以下列表,以便在将新列表传递给contains方法的新方法中进行检查。

 db.grabFollowersList();