首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >布局被View.GONE搞乱了

布局被View.GONE搞乱了
EN

Stack Overflow用户
提问于 2018-05-28 19:37:03
回答 2查看 45关注 0票数 -1

我使用自定义数组适配器与行layout.In每行,有按钮和十字来删除特定的行。

在某些行中,该按钮是可见的,但在某些行中,我对该按钮使用了View.GONE。

如果我尝试删除该按钮具有View.GONE的行,其他行(过去将该按钮设置为可见模式)会自动为该按钮设置View.GONE。

如何解决这些问题,使按钮即使在删除另一行后仍保留在行中?

代码语言:javascript
复制
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View rowView = convertView;
    MyViewHolder holder;
    if(rowView == null) {
        LayoutInflater inflater = ((Activity) getContext()).getLayoutInflater();
        rowView = inflater.inflate(R.layout.schedule_row, null);
    }

    if(rowView.getTag() == null){
        holder = new MyViewHolder(rowView);
        rowView.setTag(holder);
    }else{
        holder = (MyViewHolder) rowView.getTag();
    }

    holder.titleTextView.setText(getItem(position).getTitle());



    String startTime = getItem(position).getStartTime();
    String[] splitted = startTime.split("\t\t");
    String date = splitted[0];
    String time = splitted[1];
    date = ScheduleFragment.formatDate(date);

    DateFormat format = new SimpleDateFormat("dd - MM - yyyy HH:mm");
    Date startDate = new Date();
    try {
        startDate = format.parse(date + " " + time);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    Date currentDate = new Date();

    Map<TimeUnit,Long> dayDifference = computeDiff(currentDate, startDate);
    long days = dayDifference.get(TimeUnit.DAYS);

    if(days < 7){
        Calendar cal = Calendar.getInstance();
        cal.setTime(startDate);
        holder.startTextView.setText(time + "\t\t" + getDayOfWeek(cal.get(Calendar.DAY_OF_WEEK)));
    }
    else{
        holder.startTextView.setText(time + "\t\t" + date);
    }



    String endTime = getItem(position).getEndTime();
    splitted = endTime.split("\t\t");
    date = splitted[1];
    time = splitted[0];

    Date endDate = new Date();
    try {
        endDate = format.parse(date + " " + time);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    dayDifference = computeDiff(currentDate, endDate);
    days = dayDifference.get(TimeUnit.DAYS);

    if(days < 7){
        Calendar cal = Calendar.getInstance();
        cal.setTime(endDate);
        holder.endTextView.setText(time + "\t\t" + getDayOfWeek(cal.get(Calendar.DAY_OF_WEEK)));
    }
    else{
        holder.endTextView.setText(time + "\t\t" + date);
    }



    rowView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            rowOnClick(getItem(position));
        }
    });

    holder.cancelTask.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Main.cancelAlarm(Integer.parseInt(getItem(position).getID()) + 1);
            ScheduleFragment.taskList.remove(position);
            ScheduleFragment.taskAdapter.notifyDataSetChanged();
        }
    });

    holder.participants.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

    holder.comments.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SharedPreferences shared;
            shared = getContext().getSharedPreferences("shared", MODE_PRIVATE);
            final String email = shared.getString("email", null);

            Intent intent = new Intent(getContext(), Comments.class);
            intent.putExtra("taskEmail", email);
            int taskID = Integer.parseInt(getItem(position).getID()) + 1;
            intent.putExtra("taskID", String.valueOf(taskID));
            getContext().startActivity(intent);
        }
    });

    if(getItem(position).getGlobal().equals("0")){
        holder.participants.setVisibility(View.GONE);
        holder.comments.setVisibility(View.GONE);
    }

    return rowView;
}

class MyViewHolder extends RecyclerView.ViewHolder {

    private TextView titleTextView;
    private TextView startTextView;
    private TextView endTextView;
    private ImageView cancelTask;
    private ImageView participants;
    private ImageView comments;


    public MyViewHolder(View itemView) {
        super(itemView);

        titleTextView = itemView.findViewById(R.id.row_RemTitle);
        startTextView = itemView.findViewById(R.id.taskStartTime);
        endTextView = itemView.findViewById(R.id.taskEndTime);
        cancelTask = itemView.findViewById(R.id.cancelTaskButton);
        participants = itemView.findViewById(R.id.scheduleParticipantsBtn);
        comments = itemView.findViewById(R.id.scheduleCommentBtn);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-28 19:39:25

同时使用if-else

代码语言:javascript
复制
if(getItem(position).getGlobal().equals("0")){
        holder.participants.setVisibility(View.GONE);
        holder.comments.setVisibility(View.GONE);
    }
    else{
        holder.participants.setVisibility(View.VISBLE);
        holder.comments.setVisibility(View.GONE);
    }
票数 0
EN

Stack Overflow用户

发布于 2018-05-28 20:03:03

嗯,这似乎是一个困难和嵌套的问题,请咨询宙斯的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50565527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档