链接几个复选框以获取某些结果

问题描述 投票:0回答:2

我想制作一个可以通过很少的行列式创建结果的应用。就像我们有三个带有复选框的方法,然后从每个方法中选取一个一样,然后得到选择它们的结果。例如,从第一行开始懒惰,从下一台计算机开始懒惰,结果您需要办公室工作。

java android checkbox android-checkbox
2个回答
0
投票

这可以使用带有数组适配器的Android ListView来实现。您可以根据需要创建pojo。例如,您可以为您的特定需求创建以下两个类,我可以从问题中找到

    Class Qualities { 
        private int id;
        private string QualityName;
        ...

        getId(){...}
        setId(int id){...}
        getQualityName(){}
        //etc get and set methods

    //toString
    public String toString(){
      return getId()+" "+getQualityName();
    }
  }

     Class Intrests{
        private int id;
        private String InterestName;

        ...
        // all get and set methods
        ....

    //toString
    public String toString(){
      return getId()+" "+getIntrestName();
    }
  }

[您将使用这些类绑定到列表视图。为简单起见,我实现了toString方法,以便我们可以轻松地将其附加到arrayAdapter。否则,您将必须创建自定义布局并创建另一个将扩展的类。 ArrayAdapter并覆盖其方法。现在,用两个ListViews创建UI-一个用于您的质量,另一个用于兴趣,如下所示。

enter image description here

现在,您的活动代码中使用arrayAdapter填充两个列表视图

@Override
    protected void onCreate(Bundle savedInstanceState) {
.....
....
initListViews();
}

private void initListViews() {

        // create items
        //List view 1
        Qualities q1= new Qualities(1,"Lazy");
        Qualities q2= new Qualities(2,"Hard working");
        Qualities q3= new Qualities(3,"Witty");

        Qualities [] qualities= new Qualities[]{q1,q2,q3};
        // Array adapter
        ArrayAdapter<Qualities> adapter1= new ArrayAdapter<Qualities>(this,android.R.layout.simple_list_item_checked,qualities);
        this.listView.setAdapter(adapter1);

        //list view 2
        Intrests i1= new Intrests(1,"Computer");
        Intrests i2= new Intrests(2,"Sports");
        Intrests i3= new Intrests(3,"Commerce");

        Intrests[] interests = new Intrests[]{i1,i2,i3};
        // Array adapter
        ArrayAdapter<Intrests> adapter2= new ArrayAdapter<Intrests>(this,android.R.layout.simple_list_item_checked,interests);
        this.listView2.setAdapter(adapter2);
    }

这样,您将获得两个列表视图,其中包含您在数组中输入的值。现在,为了简化起见,我使用一个按钮来处理结果。

button_result.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               processResult();
           }

       });

其中processResult()是为您提供从列表视图中选择的值的方法(质量和利益的对象)

private void processResult() {
        Log.d(TAG,"Result button clicked");

        int pos1= listView.getCheckedItemPosition();
        int pos2 = listView2.getCheckedItemPosition();

        Qualities qSelected= (Qualities) listView.getItemAtPosition(pos1);
        Intrests iSelected=(Intrests) listView2.getItemAtPosition(pos2);
        if(qSelected!=null && iSelected!=null){
            Log.d(TAG,"result "+ qSelected.getQualityName()+" : "+ iSelected.getInterestName());

            String iAmDoingThis =tellMeWhatShouldIDo(qSelected,iSelected);

            Toast.makeText(this,iAmDoingThis,Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this,"Please Select Something",Toast.LENGTH_SHORT).show();
        }
    }

下面的tellMeWhatShouldIDo()实现了简单的逻辑来满足您的需要,您将不得不临时使用此方法来真正满足您的需要。

    private String  tellMeWhatShouldIDo(Qualities q,Intrests i){
            String doThis="";
            if(q.getQualityName().equalsIgnoreCase("lazy") && i.getInterestName().equalsIgnoreCase("computer")){
                doThis="You should do office job";
            }
            else if(q.getQualityName().equalsIgnoreCase("hard working") && i.getInterestName().equalsIgnoreCase("sports")){
                doThis="You should play football";
            }
///..... generalize here to other cases
///
            else{
                doThis="Chill and relax";
            }
            return  doThis;
        }

就是这样。希望这可以帮助。PS。为了简单起见,我没有在这段代码中处理NullPointerException。


0
投票
package eu.andykrzemien.dog4u;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

class Size {
  final int id;
  private final String SizeName;

  public Size(int id, String sizeName) {
    this.id = id;
    SizeName = sizeName;
  }

  public int getId() {
    return id;
  }

  public String getSizeName() {
    return SizeName;
  }


  public String toString(){
    return getId()+" "+getSizeName();
  }
}

class Activities {
  private int id;
  private String ActivityName;

  public Activities(int id, String activityName) {
    this.id = id;
    ActivityName = activityName;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getActivityName() {
    return ActivityName;
  }

  public void setActivityName(String activityName) {
    ActivityName = activityName;
  }
  public String toString() {
    return getId()+ " "+getActivityName();
  }
}


class Children {
  private int id;
  private String ChildrenName;

  public Children(int id, String childrenName) {
    this.id = id;
    ChildrenName = childrenName;
  }

  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getChildrenName() {
    return ChildrenName;
  }
  public void setChildrenName(String childrenName) {
    ChildrenName = childrenName;
  }
  public String toString() {
    return getId()+" "+getChildrenName();
  }
}



public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  private final ListView sizeList;
  private final ListView activityList;
  private final ListView childrenList;

  public MainActivity(ListView sizeList, ListView activityList,
                      ListView childrenList) {
    this.sizeList = sizeList;
    this.activityList = activityList;
    this.childrenList = childrenList;
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initListViews();
    Button addButton = (Button) findViewById(R.id.button_result);
  }

  private static final String TAG = "MyActivity";

  private void initListViews() {


    Size s1 = new Size(1,"Miniature");
    Size s2 = new Size(2,"Small");
    Size s3 = new Size(3,"Medium");
    Size s4 = new Size(4,"Large");
    Size s5 = new Size(5,"Giant");

    Size [] size = new Size[]{s1,s2,s3,s4,s5};
    ArrayAdapter<Size> adapter1 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_checked,size);
    this.sizeList.setAdapter(adapter1);


    Activities a1 = new Activities(1,"Lazy");
    Activities a2 = new Activities(2,"Light Active");
    Activities a3 = new Activities(3,"Very Active");

    Activities[] activities = new Activities[]{a1,a2,a3};
    ArrayAdapter<Activities> adapter2 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_checked,activities);
    this.activityList.setAdapter(adapter2);

    Children c1 = new Children(1,"Like");
    Children c2 = new Children(2,"Doesn't matter");

    Children[] children = new Children[]{c1,c2};
    ArrayAdapter<Children> adapter3 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_checked,children);
    this.childrenList.setAdapter(adapter3);

  }

    @Override
    public void onClick (View v){
    processResult();
  }

  private void processResult() {
    Log.d(TAG,"Result button clicked");
    int pos1= sizeList.getCheckedItemPosition();
    int pos2 = activityList.getCheckedItemPosition();
    int pos3 = childrenList.getCheckedItemPosition();

    Size sSelected= (Size) sizeList.getItemAtPosition(pos1);
    Activities aSelected=(Activities) activityList.getItemAtPosition(pos2);
    Children cSelected=(Children) childrenList.getItemAtPosition(pos3);
    if(sSelected!=null && aSelected!=null && cSelected!=null){
      Log.d(TAG,"result "+ sSelected.getSizeName()+" : "+ aSelected.getActivityName()+ " " + cSelected.getChildrenName());

      String petSeeker =yourBest(sSelected,aSelected,cSelected);

      Toast.makeText(this,petSeeker,Toast.LENGTH_SHORT).show();
    }else{
      Toast.makeText(this,"Please Select Something",Toast.LENGTH_SHORT).show();
    }
  }

  private String yourBest(Size sSelected, Activities aSelected,
                                     Children cSelected) {
    String doThis="";
    if(sSelected.getSizeName().equalsIgnoreCase("Small")
        && aSelected.getActivityName().equalsIgnoreCase("Lazy")
        && cSelected.getChildrenName().equals("Like")){
      doThis="Chihuahua";
    }
    else if(sSelected.getSizeName().equalsIgnoreCase("Medium")
        && aSelected.getActivityName().equalsIgnoreCase("Light Active")
        && cSelected.getChildrenName().equalsIgnoreCase("Like")){
      doThis="Labrador";
    }
///
    else{
      doThis="Find a cat";
    }
    return  doThis;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.