Как изменить направление рисования дочерних элементов сетки на Right_To_Left в Android - PullRequest
2 голосов
/ 04 декабря 2010

Я пытаюсь использовать сетку, но мне нужно изменить направление вставки дочерних элементов с (слева направо) на (справа налево).Есть ли способ сделать это, простой пример поможет мне больше.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 09 мая 2012

Я написал это.Я думаю, что решить вашу проблему

   /** Returns inverted list by step that take. for example if our list is {1, 2, 3, 4, 5, 6,
   * 7 ,8 ,9} and step is 3 inverted list is this: {3, 2, 1, 6, 5, 4, 9, 8, 7}  
   */
       public static <E> ArrayList<E> invert(List<E> source, int step){
            List<E> inverted = new ArrayList<E>();
            for(int i = 0; i < source.size(); i++){
                if((i + 1) % step == 0){
                    for(int j = i, count = 0; count < step; j--, count++){
                        inverted.add(source.get(j));
                    }
                }
            }

            //
            // When (source.size() % step) is not 0 acts.this is for last of list. add last part
            // of the source that wasn't add.
            //
            int remainder = source.size() % step;
            if((remainder) != 0 ){
                for (int j = source.size() - 1, count = 0; count < (remainder); j--, count++) {
                    inverted.add(source.get(j));
                }
            }

            return (ArrayList<E>) inverted;

        }
1 голос
/ 01 июля 2012

я столкнулся с той же проблемой, но в конце концов решил, используя сброс массива Здесь меняются только u r column no = 3

 ArrayList<String> tb_ith_sections_list = new ArrayList<String>;
tb_ith_sections_list = dbhelper.getArrayList();
        int sectionCount = tb_ith_sections_list.size();
                if(sectionCount > 0){
                    int rowCount =sectionCount/4;
                    int colCount ;
                    if(sectionCount > 4){
                         colCount=4;
                    }else{
                         colCount = sectionCount;
                    }
                    if(colCount>sectionCount){
                        colCount=sectionCount;
                    }
                    int k=colCount;
                    int m=0;
                    for(int j=0;j<rowCount;j++){
                        m=(j*colCount);
                        k=m+colCount;
                        if(k>sectionCount){
                            k=(sectionCount-(j*colCount));
                        }
                        for(int i=m;i<k;i++){
                            TB_IVN_SECTIONS tb_Temp=new TB_IVN_SECTIONS();
                            TB_IVN_SECTIONS tb_ithFirst=tb_ith_sections_list.get(i);
                            TB_IVN_SECTIONS tb_ithSecond= tb_ith_sections_list.get(k-1);
                            tb_Temp=tb_ithFirst;
                            tb_ith_sections_list.set(i, tb_ithSecond);
                            tb_ith_sections_list.set(k-1,tb_ithFirst);
                            k--;
                        }               
                    }
1 голос
/ 04 декабря 2010

Полагаю, единственный способ - создать собственное представление сетки, переопределив метод onLayout (). посмотрите здесь .

или, может быть, вы можете инвертировать элементы для каждой строки в списке адаптера? как для сетки из 3 столбцов вместо

[1 2 3][4 5 6][7 8]  -->
[3 2 1][6 5 4][null 8 7].

(я признаю, что никогда не использовал gridview)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...