【问题标题】:Check if listview items contains specified data then start next activity检查列表视图项目是否包含指定的数据,然后开始下一个活动
【发布时间】:2018-01-01 06:10:25
【问题描述】:

我有一个Listviewcustom adapter,其中有五个字段。 NameCnicNoDesginationattendance。现在我要做的是我必须检查所有列表项是否在attendance column 之后写入了一些值。如果attendance column 上有任何东西,则用户可以移动到下一个activity,否则会提示用户标记出勤。

这是我在adapter 中获取值和设置的代码。

  for (int p = 0; p < teacherList.size(); p++) {
        details = new DetailsTeacherwebservice();
        //ArrayList<Object> baris = data.get(p);
        details.setId(teacherList.get(p).getId());
        details.setTeachername(teacherList.get(p).getTeachername());
        details.setTeachercnic(teacherList.get(p).getTeachercnic());
        details.setTeacherno(teacherList.get(p).getTeacherno());
        details.setTeachergender(teacherList.get(p).getTeachergender());
        details.setAttendance(teacherList.get(p).getAttendance());

        addas.add(details);
    }
    cusadapter = new CustomAdapterTeacherWebservice(TeacherWebserviceMainList.this, addas);
    listcontent.setAdapter(cusadapter);

这是移动到下一个activity的代码

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

            Intent view_order_intent = new Intent(TeacherList.this, M_TeacherPresenceList.class);
            startActivity(view_order_intent);
            finish();
        }
    });

如果attendanceemptyNull,用户不能移动到下一个activity,因此用户必须标记列表中所有教师的出勤,然后才能转到下一个。 请帮忙

【问题讨论】:

  • 您要检查该特定记录或所有记录的出勤情况吗?
  • @PareshMayani 获取列表中的所有记录。即如果有 10 个项目,则应标记所有 10 个项目的出勤率,否则提示用户标记所有的出勤率
  • @PareshMayani 你能帮帮我吗?
  • @ArslanAli 尝试编写 foreach 来检查所有出勤项目是否已标记,如果是,则转到下一个活动,否则显示提示
  • @R2R 你能提供一个示例代码吗?

标签: android listview custom-adapter


【解决方案1】:

试试这个

    ArrayList<Boolean> isAllMarked = new ArrayList<>();
    int attentednceMarkedCount = 0;
    for (int p = 0; p < teacherList.size(); p++) {
        if (!TextUtils.isEmpty(teacherList.get(p).getAttendance())) {
            isAllMarked.add(true);
        } else {
            isAllMarked.add(false);
        }
    }

    for (int i = 0; i < isAllMarked.size(); i++) {
        if (isAllMarked.get(i)) {  //if marked true
            attentednceMarkedCount = attentednceMarkedCount + 1;
        }
    }

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

            if (attentednceMarkedCount ==teacherList.size()) {
                Intent view_order_intent = new Intent(TeacherList.this, M_TeacherPresenceList.class);
                startActivity(view_order_intent);
                finish();
            } else {
                showAlert()
            }

        }
    });

【讨论】:

  • 好吧,让我测试一下:)
【解决方案2】:

编写一个返回布尔值的方法,检查是否有缺勤,当发现缺勤时,立即退出循环,使出勤状态准确。

private boolean hasAllAttendance(){
    boolean attendanceStatus= true;

 for (int p = 0; p < teacherList.size(); p++) {
    details = new DetailsTeacherwebservice();

    if(teacherList.get(p).getAttendance() == null || 
           teacherList.get(p).getAttendance().equal("") ){
        attendanceStatus = false;
        break;
    }
  return attendanceStatus;
}

现在,使用此方法,控制您的活动转换或 toast 消息

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

    if(hasAllAttendance()){           
        Intent view_order_intent = new 
        Intent(TeacherList.this, M_TeacherPresenceList.class);
        startActivity(view_order_intent);
        finish();
    } else //Toast message

  }
});

【讨论】:

  • 好吧,让我测试一下
  • 欢迎。尝试使用“for each”循环来迭代对象,因为使用索引访问列表中的对象很容易出错。如果它对您来说是正确的,请接受答案。
【解决方案3】:

AdaptergetView() 方法上使用您的next.setOnClickListener(new View.OnClickListener()。喜欢-

private boolean checkAttendance(){
    boolean hasAll = true;

 for (int i = 0; i < teacherList.size(); i++) {
    if(att.empty() || att == null){
        hasAll = false;
        break;
    }
  return hasAll ;
}

关于getView() 方法 -

next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          if(checkAttendance()){
            Intent view_order_intent = new Intent(TeacherList.this, M_TeacherPresenceList.class);
            startActivity(view_order_intent);
            finish();
           }else{
             showYourCustomAlert()  // your alert dialog
           }
        }
    });

【讨论】:

  • teacherList.get(p).getAttendance() 返回什么?它是布尔值吗?还是字符串?
  • 它返回字符串
【解决方案4】:

//试试这个

boolean attendance = false;

    for (int p = 0; p < teacherList.size(); p++) {
        details = new DetailsTeacherwebservice();

        if (teacherList.get(p).getAttendance() != null ||
                teacherList.get(p).getAttendance().equal("")) {
            attendance = true;
        } else {
            attendance = false;
        }
    }

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

            if (attendance) {
                Intent view_order_intent = new
                        Intent(TeacherList.this, M_TeacherPresenceList.class);
                startActivity(view_order_intent);
                finish();
            } else {//Toast mark attendance}

            }
        });
    }

【讨论】:

  • 好吧,让我测试一下:)
猜你喜欢
  • 2018-06-11
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2020-04-02
  • 1970-01-01
  • 2012-08-26
相关资源
最近更新 更多