Member 14655281 Ответов: 0

Я хочу изменить цвет строки с другим списком


adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, seriennummerList)
                {
                    @NonNull
                    @Override
                    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
                    {
                        View view = super.getView(position, convertView, parent);
                        boolean treffer = false;
                        if(seriennummerList.size() != 0)
                        {
                            if(serverresponseList.size() != 0)
                            {
                                view.setBackgroundColor(Color.GREEN);

                                for(String serie : serverresponseList)
                                {
                                    for (String server : seriennummerList)
                                    {
                                        if(serie.equals(server))
                                        {
                                            view.setBackgroundColor(Color.RED);
                                            treffer = true;
                                            break;
                                        }
                                    }
                                    if(!treffer)
                                    {
                                        view.setBackgroundColor(Color.GREEN);
                                    }
                                    treffer = false;

                                }
                            }
                            else
                            {
                                view.setBackgroundColor(Color.GREEN);
                            }
                        }
                        return  view;
                    }
                };
                adapter.notifyDataSetChanged();
                listView.setAdapter(adapter);


Что я уже пробовал:

adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, seriennummerList)
                {
                    @NonNull
                    @Override
                    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
                    {
                        View view = super.getView(position, convertView, parent);
                        boolean treffer = false;
                        if(seriennummerList.size() != 0)
                        {
                            if(serverresponseList.size() != 0)
                            {
                                view.setBackgroundColor(Color.GREEN);

                                for(String serie : serverresponseList)
                                {
                                    for (String server : seriennummerList)
                                    {
                                        if(serie.equals(server))
                                        {
                                            view.setBackgroundColor(Color.RED);
                                            treffer = true;
                                            break;
                                        }
                                    }
                                    if(!treffer)
                                    {
                                        view.setBackgroundColor(Color.GREEN);
                                    }
                                    treffer = false;

                                }
                            }
                            else
                            {
                                view.setBackgroundColor(Color.GREEN);
                            }
                        }
                        return  view;
                    }
                };
                adapter.notifyDataSetChanged();
                listView.setAdapter(adapter);

David Crow

Почему вы дважды написали код? Если между ними нет разницы, удалите один. В противном случае люди, читающие это, будут переключаться между ними, пытаясь понять, что вы сделали по-другому.

David Crow

Так что же (не) происходит?

Я бы порекомендовал что-то вроде:

public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
{
    if (convertView == null)
    {
        LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = vi.inflate(resource_id_of_row, parent, false);
    }

    int nColor = Color.Green;

    // conditions that could change color go here

    convertView.setBackgroundColor(nColor);

    return convertView;
}

0 Ответов