Действительно ли легче управлять кодом с Мерзавцем или Базаром? [закрытый]

Это мое решение:

myViewPager.java

public class myViewPager extends PagerAdapter {

    public myViewPager (Context context) {
        this.context = context;
    }

    @Override
    public int getCount() {
        return rank.length+2;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        // Declare Variables

        TextView textViewRank;



        //Log.i(TAG, "get position = "+position);

        inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View itemView = inflater.inflate(R.layout.viewpager_item, container,
            false);

        textViewRank= (TextView) itemView.findViewById(R.id.textView1);

        if (position == getCount() - 1) {
            textViewRank.setText(rank[0]);
        } else if (position == 0) {
            textViewRank.setText(rank[rank.length-1]);
        } else {
            textViewRank.setText(rank[position-1]);
        }


        ((ViewPager) container).addView(itemView);

        return itemView;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}

viewpager_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:id="@+id/textView1"/>
</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {
    private static final String TAG = MainActivity.class.getName();
    public static String[] rank;
    myViewPager adapter;
    private ViewPager viewPager;
    private static int currentPage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rank = new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
        viewPager = (ViewPager) findViewById(R.id.view_pager);
        adapter = new myViewPager(this);

        viewPager.setAdapter(adapter);

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                Log.i(TAG, "onPageSelected = "+position);
                currentPage = position;
            }
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                // not needed
            }
            @Override
            public void onPageScrollStateChanged(int state) {
                if (state == ViewPager.SCROLL_STATE_IDLE) {
                    int pageCount = rank.length+2;

                    if (currentPage == pageCount-1){
                        viewPager.setCurrentItem(1,false);
                    } else if (currentPage == 0){
                        viewPager.setCurrentItem(pageCount-2,false);
                    }
                }
            }
        });
    }


}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>

Предполагается, что массив состоит из 10 элементов. Затем «добавить» 2 фиктивных элемента, но не добавить. Когда вызывается функция get_count, просто вернуть size = 10 + 2 элемента.

манекен e [0] e [1] e [2] e [3] e [4] e [5] e [6] e [7] e [8] e [9] dummy

В viewPager.addOnPageChangeListener:

при переходе к последнему элементу viewPager должен установить первый элемент следующим.

if (currentPage == pageCount-1){
    viewPager.setCurrentItem(1,false);
}

при переходе к первому элементу viewPager должен установить последний элемент следующим.

else if (currentPage == 0){
    viewPager.setCurrentItem(pageCount-2,false);
}

InIntiateItem:

 if (position == getCount() - 1) {
    textViewRank.setText(rank[0]);
 } else if (position == 0) {
    textViewRank.setText(rank[rank.length-1]);    
 } else {
    textViewRank.setText(rank[position-1]);
 }
19
задан BuZZ-dEE 26 April 2015 в 12:47
поделиться

6 ответов

В этом случае он ищет формат NSString. Посмотрите здесь подробные сведения о строке формата .

Если вы хотите, чтобы отрицательное значение 12,345,67 отображалось как -12,345,67 , то я считаю, что правильным значением NSString является @ "- #, ## 0.00"

Я также заметил следующее предложение в документе, ссылка на который приведена выше:

Если вы не укажете формат для отрицательные значения, указанный формат для положительных значений используется предшествующий знаком минус (-).

РЕДАКТИРОВАТЬ:
Обновление для 10.4 и более поздних версий: Вот PDF-файл с описанием поведения в 10.4 и более поздних версиях
И, как указано в этом документе, здесь данные о необходимом формате для 10.4 и более поздних версий . исходное видение Git (еще в апреле 2005 г.). Если вы согласны с этим, скорее всего, Git предоставит то, что вы хотите. Вкратце:

  • очень простая модель (blob-tree-commit-tag)
  • без добавления метаданных (например, для отслеживания переименования)
  • «сильные» принципы, такие как:
    • "файлы" значения не имеют. Единственное, что имеет значение, это то, как «контент» перемещался в дереве
    • . У вас есть SCM, который отслеживает, что изменилось на единственном уровне, который действительно имеет значение, а именно во всем проекте. Никакая информация на самом деле не имеет никакого смысла при меньшей степени детализации, поскольку по определению «проект» зависит от других файлов, иначе он не был бы проектом

. Понятие «весь проект» на самом деле является сильной стороной и ограничение для Git с точки зрения управления проектами: вы не должны стремиться помещать все в один репозиторий Git.

27
ответ дан 30 November 2019 в 02:07
поделиться

Это будет сводиться к личным предпочтениям, просто и понятно. .

Я использую Bazaar, и это очень просто. Концепция промежуточной области в Git дает некоторую гибкость, но также добавляет сложности. Вы можете довольно легко управлять кодом в Bazaar с помощью чего-то вроде 4 команд (добавить, зафиксировать, объединить (может быть, push / pull) и log или qlog), и вам нужно только объединение, если вам нужно несколько веток.

Обычно Bazaar, кажется, делает это. правильная вещь. У меня никогда не было проблем с тем, чтобы он делал что-то глупое или позволял мне делать что-то глупое.

12
ответ дан 30 November 2019 в 02:07
поделиться

Я думаю, это зависит от вашего личного вкуса - есть аргументы в пользу обоих. Я активно использовал bzr для личных проектов в течение нескольких лет, начиная с 0.8 дней, но я перешел на git в прошлом году и никогда не оглядывался назад, по крайней мере, для управления исходным кодом.

Мне слишком лень переписывать свои собственное впечатление , но подведем итог:

  • bzr более стабильно работает на разных платформах
  • bzr легче обнаружить (если у вас есть инструмент без какой-либо документации, любой полукомпетентный пользователь сможет использовать bzr, это не так с git)
  • bzr легче расширить с помощью API, git проще расширить с помощью unix (pipe)
  • git намного мощнее IMHO; в частности, я убежден, что их подход к обработке переименования, и отслеживание контента является правильным во многих случаях
  • ИМХО система bzr revno не годится. Это выглядит проще, но это сильно сбивает с толку, когда вы начинаете иметь много ветвей и меняете основную ветку.
9
ответ дан 30 November 2019 в 02:07
поделиться

Единственное, что Git делает намного лучше, - это обрабатывает множество веток. Он делает это намного быстрее, чем bzr, и не требует нескольких копий исходного кода. Все ветки находятся в одном каталоге. Я обнаружил, что использую ветки git гораздо чаще, чем с bzr, особенно потому, что мое репо не маленькое и также включает двоичные файлы (всего 180 МБ).

РЕДАКТИРОВАТЬ : На самом деле, я ошибаюсь. --no-tree + lightweight checkout работает как Git. Спасибо, FryGuy. О, и я нашел эту запись в блоге , в которой есть полезная информация.

1
ответ дан 30 November 2019 в 02:07
поделиться

Bazaar is очень хорошо интегрирован с ubuntu, я использую ubuntu уже много лет, устал переходить на другой, более вызывающий дистрибутив, но нет смысла. Я предпочитаю bazaar git / mercurial coz bazaar - уведомления очень хорошо интегрированы в Ubuntu. Вдобавок вы получаете бесплатный хостинг от Launchpad, что является огромным плюсом.

1
ответ дан 30 November 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: