【问题标题】:Trying to find all objects out of and arraylist wit a field with the same value and display this in a list尝试从具有相同值的字段中查找所有对象并在列表中显示它
【发布时间】:2016-03-18 12:45:55
【问题描述】:

好吧,我有一个包含客户端对象的数组列表,我现在要做的是在其中一个客户端字段上搜索数组列表,并获取所有共享此值的客户端。之后在列表中显示这些客户端。

客户:

public class Client implements Serializable{
private String name;
private String phone;
private String email;
private String url;
private Double turnover;
private String visitAddress;
private String visitCity;
private String visitZipcode;
private String visitCountry;
private String postalAddress;
private String postalCity;
private String postalZipcode;
private String postalCountry;
private List<Contact> contactList =  new ArrayList<Contact>();


public Client(String Name, String Phone, String Email, String URL, Double Turnover,
              String VisitAddress, String VisitCity, String VisitZipcode, String VisitCountry,
              String PostalAddress, String PostalCity, String PostalZipcode, String PostalCountry, List contactList){
        super();
        this.name = Name;
        this.phone = Phone;
        this.email = Email;
        this.url = URL;
        this.turnover = Turnover;

        this.visitAddress = VisitAddress;
        this.visitCity = VisitCity;
        this.visitZipcode = VisitZipcode;
        this.visitCountry = VisitCountry;
        this.postalAddress = PostalAddress;
        this.postalCity = PostalCity;
        this.postalZipcode = PostalZipcode;
        this.postalCountry = PostalCountry;
        this.contactList = contactList;
}


public String getName() {
    return name;
}

public String getPhone() {
    return phone;
}

public String getEmail() {
    return email;
}

public String getUrl() {
    return url;
}

public Double getTurnover() {

    return turnover;
}

public String getVisitAddress() {
    return visitAddress;
}

public String getVisitCity() {
    return visitCity;
}

public String getVisitZipcode() {
    return visitZipcode;
}

public String getVisitCountry() {
    return visitCountry;
}

public String getPostalAddress() {
    return postalAddress;
}

public String getPostalCity() {
    return postalCity;
}

public String getPostalZipcode() {
    return postalZipcode;
}

public String getPostalCountry() {
    return postalCountry;
}

public List<Contact> getContactlist(){
    return contactList;
}

public void setName(String name) {
    this.name = name;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public void setEmail(String email) {
    this.email = email;
}

public void setUrl(String url) {
    this.url = url;
}

public void setTurnover(Double turnover) {
    this.turnover = turnover;
}

public void setVisitAddress(String visitAddress) {
    this.visitAddress = visitAddress;
}

public void setVisitCity(String visitCity) {
    this.visitCity = visitCity;
}

public void setVisitZipcode(String visitZipcode) {
    this.visitZipcode = visitZipcode;
}

public void setVisitCountry(String visitCountry) {
    this.visitCountry = visitCountry;
}

public void setPostalAddress(String postalAddress) {
    this.postalAddress = postalAddress;
}

public void setPostalCity(String postalCity) {
    this.postalCity = postalCity;
}

public void setPostalZipcode(String postalZipcode) {
    this.postalZipcode = postalZipcode;
}

public void setPostalCountry(String postalCountry) {
    this.postalCountry = postalCountry;
}

public void setContactList(List<Contact> contactList) {
    this.contactList = contactList;
}

}

现在我这样搜索:

public class SearchClientFragment extends Fragment implements OnClickListener {

private ClientsArray clientsArray = new ClientsArray();
private Client currentClient;

private EditText searchName;

private EditText searchVisitAddress;
private EditText searchVisitCity;
private EditText searchVisitZipcode;
private EditText searchVisitCountry;

private EditText searchPostalAddress;
private EditText searchPostalCity;
private EditText searchPostalZipcode;
private EditText searchPostalCountry;

private EditText searchContactFirstname;
private EditText searchContactSurname;

public SearchClientFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View rootView = inflater.inflate(R.layout.fragment_search_client,
            container, false);

    Button searchClientButton = (Button) rootView.findViewById(R.id.btn_submit_search_client);
    searchClientButton.setOnClickListener(this);

    Button clearSearchFields = (Button) rootView.findViewById(R.id.btn_clear_search_client);
    clearSearchFields.setOnClickListener(this);

    searchName = (EditText) rootView.findViewById(R.id.search_company_name);

    searchVisitAddress = (EditText) rootView.findViewById(R.id.search_visit_address);
    searchVisitCity = (EditText) rootView.findViewById(R.id.search_visit_city);
    searchVisitZipcode = (EditText) rootView.findViewById(R.id.search_visit_zipcode);
    searchVisitCountry = (EditText) rootView.findViewById(R.id.search_visit_country);

    searchPostalAddress = (EditText) rootView.findViewById(R.id.search_postal_address);
    searchPostalCity = (EditText) rootView.findViewById(R.id.search_postal_city);
    searchPostalZipcode = (EditText) rootView.findViewById(R.id.search_postal_zipcode);
    searchPostalCountry = (EditText) rootView.findViewById(R.id.search_postal_country);

    searchContactFirstname = (EditText) rootView.findViewById(R.id.search_contact_fname);
    searchContactSurname = (EditText) rootView.findViewById(R.id.search_contact_sname);


    return rootView;
}

@Override
public void onClick(View v) {
    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    switch (v.getId()){
        case R.id.btn_clear_search_client:
            searchName.setText("");

            searchVisitAddress.setText("");
            searchVisitCity.setText("");
            searchVisitZipcode.setText("");
            searchVisitCountry.setText("");

            searchPostalAddress.setText("");
            searchPostalCity.setText("");
            searchPostalZipcode.setText("");
            searchPostalCountry.setText("");

            searchContactFirstname.setText("");
            searchContactSurname.setText("");
            break;

        case R.id.btn_submit_search_client:
            for(Client client : clientsArray.ClientsArray){
                client.getContactlist();
                if(client.getName().trim().equals(searchName.getText().toString().trim())) {
                    currentClient = client;
                }else if (client.getVisitAddress().trim().equals(searchVisitAddress.getText().toString().trim())){
                    currentClient = client;
                }else if (client.getVisitCity().trim().equals(searchVisitCity.getText().toString().trim())){
                    currentClient = client;
                }else if (client.getVisitZipcode().trim().equals(searchVisitZipcode.getText().toString().trim())){
                    currentClient = client;
                }else if (client.getVisitCountry().trim().equals(searchVisitCountry.getText().toString().trim())){
                    currentClient = client;
                } else if (client.getPostalAddress().trim().equals(searchPostalAddress.getText().toString().trim())){
                    currentClient = client;
                }else if (client.getPostalCity().trim().equals(searchPostalCity.getText().toString().trim())){
                    currentClient = client;
                }else if (client.getPostalZipcode().trim().equals(searchPostalZipcode.getText().toString().trim())){
                    currentClient = client;
                }else if (client.getPostalCountry().trim().equals(searchPostalCountry.getText().toString().trim())){
                    currentClient = client;
                }for(Contact contact : client.getContactlist()){
                    if(contact.getFirstname().trim().equals(searchContactFirstname.getText().toString().trim())){
                        currentClient = client;
                    }else if(contact.getSurname().trim().equals(searchContactSurname.getText().toString().trim())){
                        currentClient = client;
                    }
                }
                if(currentClient != null){
                    ViewClientFragment viewClientFragment = new ViewClientFragment();
                    viewClientFragment.setCurrentClient(currentClient);
                    transaction.replace(R.id.group, viewClientFragment, "viewcfrag");
                    transaction.addToBackStack(null);
                    transaction.commit();
                }else{
                    Toast.makeText(this.getActivity(), "Client Not Found", Toast.LENGTH_LONG).show();
                }

            }
            break;
    }

}
}

当只有 1 个客户端具有该字段值时,这非常有用,并将我带到该客户端的视图片段。但是如果我在同一字段中填写多个具有的值,我现在想获得所有客户。例如,当我在 visitaddress Groningen 搜索时,我想获取所有以 groningen 作为访问地址的客户。

我是否必须将这些添加到另一个数组才能在列表视图中显示这些? 或者我可以用其他方式吗

我的解决方案:编辑搜索片段

public class SearchClientFragment extends Fragment implements OnClickListener {

private Client currentClient;

private EditText searchName;

private EditText searchVisitAddress;
private EditText searchVisitCity;
private EditText searchVisitZipcode;
private EditText searchVisitCountry;

private EditText searchPostalAddress;
private EditText searchPostalCity;
private EditText searchPostalZipcode;
private EditText searchPostalCountry;

private EditText searchContactFirstname;
private EditText searchContactSurname;

public SearchClientFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View rootView = inflater.inflate(R.layout.fragment_search_client,
            container, false);

    Button searchClientButton = (Button) rootView.findViewById(R.id.btn_submit_search_client);
    searchClientButton.setOnClickListener(this);

    Button clearSearchFields = (Button) rootView.findViewById(R.id.btn_clear_search_client);
    clearSearchFields.setOnClickListener(this);

    searchName = (EditText) rootView.findViewById(R.id.search_company_name);

    searchVisitAddress = (EditText) rootView.findViewById(R.id.search_visit_address);
    searchVisitCity = (EditText) rootView.findViewById(R.id.search_visit_city);
    searchVisitZipcode = (EditText) rootView.findViewById(R.id.search_visit_zipcode);
    searchVisitCountry = (EditText) rootView.findViewById(R.id.search_visit_country);

    searchPostalAddress = (EditText) rootView.findViewById(R.id.search_postal_address);
    searchPostalCity = (EditText) rootView.findViewById(R.id.search_postal_city);
    searchPostalZipcode = (EditText) rootView.findViewById(R.id.search_postal_zipcode);
    searchPostalCountry = (EditText) rootView.findViewById(R.id.search_postal_country);

    searchContactFirstname = (EditText) rootView.findViewById(R.id.search_contact_fname);
    searchContactSurname = (EditText) rootView.findViewById(R.id.search_contact_sname);

    ClientsSearchArray.ClientsSearchArray.clear();

    return rootView;
}

@Override
public void onClick(View v) {
    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    switch (v.getId()){
        case R.id.btn_clear_search_client:
            searchName.setText("");

            searchVisitAddress.setText("");
            searchVisitCity.setText("");
            searchVisitZipcode.setText("");
            searchVisitCountry.setText("");

            searchPostalAddress.setText("");
            searchPostalCity.setText("");
            searchPostalZipcode.setText("");
            searchPostalCountry.setText("");

            searchContactFirstname.setText("");
            searchContactSurname.setText("");
            break;

        case R.id.btn_submit_search_client:
            for(Client client : ClientsArray.ClientsArray){
                client.getContactlist();
                if(client.getName().trim().equals(searchName.getText().toString().trim())) {
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }else if (client.getVisitAddress().trim().equals(searchVisitAddress.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }else if (client.getVisitCity().trim().equals(searchVisitCity.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }else if (client.getVisitZipcode().trim().equals(searchVisitZipcode.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }else if (client.getVisitCountry().trim().equals(searchVisitCountry.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                } else if (client.getPostalAddress().trim().equals(searchPostalAddress.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }else if (client.getPostalCity().trim().equals(searchPostalCity.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }else if (client.getPostalZipcode().trim().equals(searchPostalZipcode.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }else if (client.getPostalCountry().trim().equals(searchPostalCountry.getText().toString().trim())){
                    currentClient = client;
                    ClientsSearchArray.ClientsSearchArray.add(currentClient);
                }for(Contact contact : client.getContactlist()){
                    if(contact.getFirstname().trim().equals(searchContactFirstname.getText().toString().trim())){
                        currentClient = client;
                        ClientsSearchArray.ClientsSearchArray.add(currentClient);
                    }else if(contact.getSurname().trim().equals(searchContactSurname.getText().toString().trim())){
                        currentClient = client;
                        ClientsSearchArray.ClientsSearchArray.add(currentClient);
                    }
                }
            }
            break;
    }
    if(ClientsSearchArray.ClientsSearchArray.size() > 1){
        SearchedClientsListFragment searchedClientsListFragment = new SearchedClientsListFragment();
        transaction.replace(R.id.group, searchedClientsListFragment, "searchedcfrag");
        transaction.addToBackStack(null);
        transaction.commit();
    }else if (currentClient != null){
        ViewClientFragment viewClientFragment = new ViewClientFragment();
        viewClientFragment.setCurrentClient(currentClient);
        transaction.replace(R.id.group, viewClientFragment, "viewcfrag");
        transaction.addToBackStack(null);
        transaction.commit();
    }else{
        Toast.makeText(this.getActivity(), "Client Not Found", Toast.LENGTH_LONG).show();
    }

}
}

【问题讨论】:

  • 您是否已经实现了列表视图?你问如何实现列表视图?还是只想知道如何更新列表视图?
  • 已经有多个列表视图,只是想清楚我认为,已经修复它,问题是找到我想要显示的客户并将它们保存在列表中,实际上有点容易,我是只是想复杂。编辑是我的解决方法

标签: java android object arraylist


【解决方案1】:

前段时间解决了我自己的问题,忘记贴在这里了。

case R.id.btn_submit_search_client:

            ClientsSearchArray.ClientsSearchArray.clear();
            Client currentClient = null;

            if (searchName.getText().toString().trim().equals("")
                    && searchVisitAddress.getText().toString().trim().equals("")
                    && searchVisitCity.getText().toString().trim().equals("")
                    && searchVisitZipcode.getText().toString().trim().equals("")
                    && searchVisitCountry.getText().toString().trim().equals("")
                    && searchPostalAddress.getText().toString().trim().equals("")
                    && searchPostalCity.getText().toString().trim().equals("")
                    && searchPostalZipcode.getText().toString().trim().equals("")
                    && searchPostalCountry.getText().toString().trim().equals("")
                    && searchContactSurname.getText().toString().trim().equals("")
                    && searchContactFirstname.getText().toString().trim().equals("")
                    ) {
                Toast.makeText(this.getActivity(), "Please give search paramaters", Toast.LENGTH_LONG).show();
            } else {
                for (Client client : ClientsArray.ClientsArray) {
                    if (client.getName().trim().contains(searchName.getText().toString().trim())
                            && client.getVisitAddress().trim().contains(searchVisitAddress.getText().toString().trim())
                            && client.getVisitCity().trim().contains(searchVisitCity.getText().toString().trim())
                            && client.getVisitZipcode().trim().contains(searchVisitZipcode.getText().toString().trim())
                            && client.getVisitCountry().trim().contains(searchVisitCountry.getText().toString().trim())
                            && client.getPostalAddress().trim().contains(searchPostalAddress.getText().toString().trim())
                            && client.getPostalCity().trim().contains(searchPostalCity.getText().toString().trim())
                            && client.getPostalZipcode().trim().contains(searchPostalZipcode.getText().toString().trim())
                            && client.getPostalCountry().trim().contains(searchPostalCountry.getText().toString().trim())) {

                        if (!searchContactSurname.getText().toString().trim().equals("")
                                || !searchContactFirstname.getText().toString().trim().equals("")) {
                            for (Contact contact : client.getContactList()) {
                                if (contact.getFirstname().trim().contains(searchContactFirstname.getText().toString().trim())
                                        && contact.getSurname().trim().contains(searchContactSurname.getText().toString().trim())) {

                                    if(client.getContactList().size() != 0){
                                        currentClient = client;
                                        if (!ClientsSearchArray.ClientsSearchArray.contains(currentClient)) {
                                            ClientsSearchArray.ClientsSearchArray.add(currentClient);
                                        }
                                    }
                                }
                            }
                        }else{
                            currentClient = client;
                            if (!ClientsSearchArray.ClientsSearchArray.contains(currentClient)) {
                                ClientsSearchArray.ClientsSearchArray.add(currentClient);
                            }
                        }
                    }
                }

                if (ClientsSearchArray.ClientsSearchArray.size() > 1) {
                    SearchedClientsListFragment searchedClientsListFragment = new SearchedClientsListFragment();
                    transaction.replace(R.id.group, searchedClientsListFragment, "searchedcfrag");
                    transaction.addToBackStack(null);
                    transaction.commit();
                } else if (currentClient != null) {
                    ViewClientFragment viewClientFragment = new ViewClientFragment();
                    viewClientFragment.setCurrentClient(currentClient);
                    transaction.replace(R.id.group, viewClientFragment, "viewcfrag");
                    transaction.addToBackStack(null);
                    transaction.commit();
                } else {
                    Toast.makeText(this.getActivity(), "Client Not Found", Toast.LENGTH_LONG).show();
                }


            }
            break;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多