Welcome to mirror list, hosted at ThFree Co, Russian Federation.

StreetAdapter.java « editor « maps « mapswithme « com « src « android - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: df90ee5f26bf8ad3f1573b99fab7596ea0b71315 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.mapswithme.maps.editor;

import android.content.res.Resources;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.TextView;

import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
import com.mapswithme.maps.dialog.EditTextDialogFragment;
import com.mapswithme.maps.editor.data.LocalizedStreet;
import com.mapswithme.util.UiUtils;

public class StreetAdapter extends RecyclerView.Adapter<StreetAdapter.BaseViewHolder>
{
  private static final int TYPE_ADD_STREET = 0;
  private static final int TYPE_STREET = 1;

  private final LocalizedStreet[] mStreets;
  private final StreetFragment mFragment;
  private LocalizedStreet mSelectedStreet;

  public StreetAdapter(@NonNull StreetFragment host, @NonNull LocalizedStreet[] streets, @NonNull LocalizedStreet selected)
  {
    mFragment = host;
    mStreets = streets;
    mSelectedStreet = selected;
  }

  @Override
  public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
  {
    return viewType == TYPE_STREET ? new StreetViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_street, parent, false))
                                   : new AddViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_add_street, parent, false));
  }

  @Override
  public void onBindViewHolder(BaseViewHolder holder, int position)
  {
    holder.bind(position);
  }

  @Override
  public int getItemCount()
  {
    return mStreets.length + 1;
  }

  @Override
  public int getItemViewType(int position)
  {
    return position == getItemCount() - 1 ? TYPE_ADD_STREET : TYPE_STREET;
  }

  public LocalizedStreet getSelectedStreet()
  {
    return mSelectedStreet;
  }

  private void addStreet()
  {
    final Resources resources = MwmApplication.get().getResources();
    EditTextDialogFragment.show(resources.getString(R.string.street), null,
                                resources.getString(R.string.ok),
                                resources.getString(R.string.cancel), mFragment);
  }

  protected abstract class BaseViewHolder extends RecyclerView.ViewHolder
  {
    public BaseViewHolder(View itemView)
    {
      super(itemView);
    }

    public void bind(int position) {}
  }

  protected class StreetViewHolder extends BaseViewHolder implements View.OnClickListener
  {
    final TextView streetDef;
    final TextView streetLoc;
    final CompoundButton selected;

    public StreetViewHolder(View itemView)
    {
      super(itemView);
      streetDef = (TextView) itemView.findViewById(R.id.street_default);
      streetLoc = (TextView) itemView.findViewById(R.id.street_localized);
      selected = (CompoundButton) itemView.findViewById(R.id.selected);
      itemView.setOnClickListener(this);
      selected.setOnClickListener(new View.OnClickListener()
      {
        @Override
        public void onClick(View v)
        {
          selected.toggle();
          StreetViewHolder.this.onClick(selected);
        }
      });
    }

    @Override
    public void bind(int position)
    {
      selected.setChecked(mSelectedStreet.defaultName.equals(mStreets[position].defaultName));
      streetDef.setText(mStreets[position].defaultName);
      UiUtils.setTextAndHideIfEmpty(streetLoc, mStreets[position].localizedName);
    }

    @Override
    public void onClick(View v)
    {
      mSelectedStreet = mStreets[getAdapterPosition()];
      notifyDataSetChanged();
      mFragment.saveStreet(mSelectedStreet);
    }
  }

  protected class AddViewHolder extends BaseViewHolder
  {
    public AddViewHolder(View itemView)
    {
      super(itemView);
      itemView.setOnClickListener(new View.OnClickListener()
      {
        @Override
        public void onClick(View v)
        {
          addStreet();
        }
      });
    }
  }
}