Poziomy widok listy w Androidzie?

Czy możliwe jest ustawienie ListView poziomo? Zrobiłem to za pomocą widoku galerii, ale wybrany element pojawia się na środku ekranu automatycznie. Nie chcę, aby wybrany przedmiot był w tym samym miejscu, w którym kliknąłem. Jak mogę rozwiązać ten problem? Moim pomysłem było ustawienie ListView za pomocą poziomego przewijania. Podziel się swoim pomysłem?

Author: Shashanth, 2010-07-13

19 answers

Zgodnie z dokumentacją AndroidaRecyclerView jest to nowy sposób organizowania elementów w listview i wyświetlania ich poziomo

Zalety:

  1. ponieważ za pomocą adaptera Recyclerview, wzorzec ViewHolder jest automatycznie zaimplementowane
  2. animacja jest Å‚atwa do wykonania
  3. wiele innych funkcji

Więcej informacji o RecyclerView:

  1. grokkingandroid.com
  2. antonioleiva.com

Próbka:

Survivingwithandroid.com

Wystarczy dodać poniższy blok, aby ListView ustawić poziomo od pionu

Code-snippet

LinearLayoutManager layoutManager= new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(layoutManager);
 124
Author: Devrath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-05 15:38:04

Paul nie zadaje sobie trudu, aby naprawić błędy swojej biblioteki lub zaakceptować poprawki użytkowników. Dlatego proponuję inną bibliotekę o podobnej funkcjonalności:

Https://github.com/sephiroth74/HorizontalVariableListView

Aktualizacja: 24 lipca 2013 autor (sephiroth74) wydał całkowicie przepisaną wersję opartą na kodzie Androida 4.2.2 ListView. Muszę powiedzieć, że nie ma wszystkich błędów, które miała poprzednia wersja i działa świetnie!

 60
Author: Malachiasz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 08:36:38

@ Paul odpowiedz linki do świetnego rozwiązania, ale kod nie pozwala na użycie onClickListeners na elementach dzieci (Funkcje callback nigdy nie są wywoływane). Od jakiegoś czasu zmagam się z szukaniem rozwiązania i postanowiłem zamieścić tutaj to, co trzeba zmodyfikować w tym kodzie (na wypadek, gdyby ktoś go potrzebował).

Zamiast nadpisywania dispatchTouchEvent nadpisywania onTouchEvent. Użyj tego samego kodu dispatchTouchEvent i usuń metodę (możesz przeczytać różnicę między tymi dwoma tutaj http://developer.android.com/guide/topics/ui/ui-events.html#EventHandlers )

@Override
public boolean onTouchEvent(MotionEvent event) {
    boolean handled = mGesture.onTouchEvent(event);
    return handled;
}

Następnie dodaj poniższy kod, który zdecyduje się ukraść Zdarzenie z elementu children i przekazać je naszemu onTouchEvent, lub pozwól im się nim zająć.

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    switch( ev.getActionMasked() ){
        case MotionEvent.ACTION_DOWN:
             mInitialX = ev.getX();
             mInitialY = ev.getY();             
             return false;
        case MotionEvent.ACTION_MOVE:
             float deltaX = Math.abs(ev.getX() - mInitialX);
             float deltaY = Math.abs(ev.getY() - mInitialY);
             return ( deltaX > 5 || deltaY > 5 );
        default:
             return super.onInterceptTouchEvent(ev);
    }
}

Na koniec, nie zapomnij zadeklarować zmiennych w swojej klasie:

private float mInitialX;
private float mInitialY;
 28
Author: Xavi Gil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 21:13:04

Ponieważ Google wprowadziło bibliotekę obsługi Androida v7 21.0.0, możesz użyć RecyclerView do przewijania elementów w poziomie. Widżet RecyclerView jest bardziej zaawansowaną i elastyczną wersją ListView.

Aby użyć RecyclerView, wystarczy dodać zależność:

com.android.support:recyclerview-v7:23.0.1

Oto przykład:

public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_activity);

        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);

        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(layoutManager);

        MyAdapter adapter = new MyAdapter(myDataset);
        recyclerView.setAdapter(adapter);
    }
}

Więcej informacji o RecyclerView:

 23
Author: klimat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-22 13:49:24

To jest trochę (bardzo) późno, ale zamieszczam to na wypadek, gdyby ktoś przyszedł to później.

Biblioteka wsparcia od Android L preview ma RecyclerView to robi dokładnie to, czego chcesz.

W tej chwili możesz go pobrać tylko przez L preview SDK i musisz ustawić minSdk na L. Ale możesz skopiować wszystkie niezbędne pliki do swojego projektu i używać ich w ten sposób, dopóki L nie zostanie oficjalnie wyłączony.

Możesz pobrać dokumenty podglądu tutaj .

Ostrzeżenie: API dla widoku Recycler może się zmienić i może zawierać błędy.

Aktualizacja

Kod źródłowy horizontal listview to:

LinearLayoutManager layoutManager
    = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);

RecyclerView myList = findViewById(R.id.my_recycler_view);
myList.setLayoutManager(layoutManager);
 21
Author: Abhay Buch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-22 07:06:00

Pobierz plik jar z tutaj

Teraz umieść go w folderze libs, kliknij prawym przyciskiem myszy i wybierz "Dodaj jako bibliotekę"

Teraz w main.XML put this code

 <com.devsmart.android.ui.HorizontalListView
    android:id="@+id/hlistview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

Teraz w klasie Activity jeśli chcesz poziome Listview z obrazkami to Umieść ten kod

  HorizontalListView hListView = (HorizontalListView) findViewById(R.id.hlistview);
    hListView.setAdapter(new HAdapter(this));


 private class HAdapter extends BaseAdapter {

    LayoutInflater inflater;

    public HAdapter(Context context) {
        inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return Const.template.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        HViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.listinflate, null);
            holder = new HViewHolder();
            convertView.setTag(holder);

        } else {
            holder = (HViewHolder) convertView.getTag();
        }
        holder.img = (ImageView) convertView.findViewById(R.id.image);
        holder.img.setImageResource(Const.template[position]);
        return convertView;
    }

}

class HViewHolder {
    ImageView img;
}
 19
Author: Panchal Amit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 09:49:18

To naprawdę bardzo proste : po prostu Obróć widok listy, aby położyć się na jego boku

mlistView.setRotation(-90);

Następnie po napompowaniu dzieci, które powinny być wewnątrz metody getView. obracasz dzieci, aby stały prosto:

 mylistViewchild.setRotation(90);

Edit: jeśli ListView nie pasuje poprawnie po obróceniu, umieść ListView wewnątrz tego RotateLayout w następujący sposób:

 <com.github.rongi.rotate_layout.layout.RotateLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:angle="90"> <!-- Specify rotate angle here -->

    <ListView
       android:layout_width="match_parent"
       android:layout_height="match_parent">
    </ListView>
</com.github.rongi.rotate_layout.layout.RotateLayout>
 13
Author: kc ochibili,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-12 02:04:06

Moim rozwiązaniem jest po prostu użyć ViewPager widget. Nie jest zablokowany jako Gallery i ma wbudowane funkcje do recyklingu widoków (jako ListView). Podobne podejście możesz zobaczyć w aplikacji Google Play, za każdym razem, gdy masz do czynienia z poziomo przewijanymi listami.

Wystarczy rozszerzyć PagerAdapter i wykonać tam kilka poprawek:

public class MyPagerAdapter extends PagerAdapter {

    private Context mContext;

    public MyPagerAdapter(Context context) {
        this.mContext = context;
    }

    // As per docs, you may use views as key objects directly 
    // if they aren't too complex
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        View view = inflater.inflate(R.layout.item, null);
        container.addView(view);
        return view;
    }

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

    @Override
    public int getCount() {
        return 10;
    }

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

    // Important: page takes all available width by default,
    // so let's override this method to fit 5 pages within single screen
    @Override
    public float getPageWidth(int position) {
        return 0.2f;
    }
}

W rezultacie, będziesz miał poziomo przewijany widżet z adapterem, jak to: Tutaj wpisz opis obrazka

 9
Author: fraggjkee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 08:52:04

Uwaga: Android obsługuje teraz poziomy widok listy za pomocą RecyclerView, więc teraz ta odpowiedź jest przestarzała, aby uzyskać informacje o RecyclerView : https://developer.android.com/reference/android/support/v7/widget/RecyclerView

Opracowałem logikę, aby to zrobić bez użycia zewnętrznej biblioteki przewijania poziomego, oto widok poziomy, który osiągnąłem i zamieściłem tutaj swoją odpowiedź: https://stackoverflow.com/a/33301582/5479863

Mój odpowiedź json jest następująca:

{"searchInfo":{"status":"1","message":"Success","clist":[{"id":"1de57434-795e-49ac-0ca3-5614dacecbd4","name":"Theater","image_url":"http://52.25.198.71/miisecretory/category_images/movie.png"},{"id":"62fe1c92-2192-2ebb-7e92-5614dacad69b","name":"CNG","image_url":"http://52.25.198.71/miisecretory/category_images/cng.png"},{"id":"8060094c-df4f-5290-7983-5614dad31677","name":"Wine-shop","image_url":"http://52.25.198.71/miisecretory/category_images/beer.png"},{"id":"888a90c4-a6b0-c2e2-6b3c-561788e973f6","name":"Chemist","image_url":"http://52.25.198.71/miisecretory/category_images/chemist.png"},{"id":"a39b4ec1-943f-b800-a671-561789a57871","name":"Food","image_url":"http://52.25.198.71/miisecretory/category_images/food.png"},{"id":"c644cc53-2fce-8cbe-0715-5614da9c765f","name":"College","image_url":"http://52.25.198.71/miisecretory/category_images/college.png"},{"id":"c71e8757-072b-1bf4-5b25-5614d980ef15","name":"Hospital","image_url":"http://52.25.198.71/miisecretory/category_images/hospital.png"},{"id":"db835491-d1d2-5467-a1a1-5614d9963c94","name":"Petrol-Pumps","image_url":"http://52.25.198.71/miisecretory/category_images/petrol.png"},{"id":"f13100ca-4052-c0f4-863a-5614d9631afb","name":"ATM","image_url":"http://52.25.198.71/miisecretory/category_images/atm.png"}]}}

Plik układu:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="5">    
    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="4" />
    <HorizontalScrollView
        android:id="@+id/horizontalScroll"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <LinearLayout
            android:id="@+id/ll"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="horizontal">    
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>

Plik klasy:

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.ll);
        for (int v = 0; v < collectionInfo.size(); v++) {
            /*---------------Creating frame layout----------------------*/

            FrameLayout frameLayout = new FrameLayout(ActivityMap.this);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, getPixelsToDP(90));
            layoutParams.rightMargin = getPixelsToDP(10);
            frameLayout.setLayoutParams(layoutParams);

            /*--------------end of frame layout----------------------------*/

            /*---------------Creating image view----------------------*/
            final ImageView imgView = new ImageView(ActivityMap.this); //create imageview dynamically
            LinearLayout.LayoutParams lpImage = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            imgView.setImageBitmap(collectionInfo.get(v).getCatImage());
            imgView.setLayoutParams(lpImage);
            // setting ID to retrieve at later time (same as its position)
            imgView.setId(v);
            imgView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    // getting id which is same as its position
                    Log.i(TAG, "Clicked on " + collectionInfo.get(v.getId()).getCatName());
                    // getting selected category's data list
                    new GetSelectedCategoryData().execute(collectionInfo.get(v.getId()).getCatID());
                }
            });
            /*--------------end of image view----------------------------*/

            /*---------------Creating Text view----------------------*/
            TextView textView = new TextView(ActivityMap.this);//create textview dynamically
            textView.setText(collectionInfo.get(v).getCatName());
            FrameLayout.LayoutParams lpText = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER);
            // Note: LinearLayout.LayoutParams 's gravity was not working so I putted Framelayout as 3 paramater is gravity itself
            textView.setTextColor(Color.parseColor("#43A047"));
            textView.setLayoutParams(lpText);
            /*--------------end of Text view----------------------------*/

            //Adding views at appropriate places
            frameLayout.addView(imgView);
            frameLayout.addView(textView);
            linearLayout.addView(frameLayout);

        }

 private int getPixelsToDP(int dp) {
        float scale = getResources().getDisplayMetrics().density;
        int pixels = (int) (dp * scale + 0.5f);
        return pixels;
    }

Trick, który tutaj działa, to identyfikator, który przypisałem do ImageView " imgView.setId (v) " i po tym zastosowaniu onClickListener do tego ponownie pobieram id widoku....Mam również skomentował wewnątrz kodu tak, że jego łatwe do zrozumienia, Mam nadzieję, że to może być bardzo przydatne... Szczęśliwego Kodowania... :)

http://i.stack.imgur.com/lXrpG.png

 8
Author: Abdul Aziz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-05 09:20:46

To nie jest zbyt duża odpowiedź, ale co powiesz na użycie poziomego widoku przewijania?

 6
Author: Faisal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-13 18:56:29

Możesz użyć RecyclerView w bibliotece wsparcia. RecyclerView jest uogólnioną wersją ListView, która obsługuje:

  • menedżer ukÅ‚adu do pozycjonowania elementów
  • domyÅ›lne animacje dla common item operations

Android Recycler View Docs

 5
Author: mobileideafactory.com,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-27 17:42:15

Wiele szukałem rozwiązania tego problemu. Krótka odpowiedź brzmi: nie ma dobrego rozwiązania, bez nadpisywania prywatnych metod i tego typu rzeczy. Najlepsze, co znalazłem, to zaimplementować go samodzielnie od podstaw poprzez rozszerzenie AdapterView. To dość żałosne. Zobacz moje więc pytanie o poziomy ListViews .

 3
Author: Neil Traft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:06

Musiałem zrobić to samo dla jednego z moich projektów i skończyło się na pisaniu własnych, jak również. Nazwałem go HorzListView jest teraz częścią mojej biblioteki open source Aniqroid .

Http://aniqroid.sileria.com/doc/api/ (poszukaj plików do pobrania na dole lub użyj google code project, aby zobaczyć więcej opcji pobierania: http://code.google.com/p/aniqroid/downloads/list )

Dokumentacja klasy jest tutaj: http://aniqroid.sileria.com/doc/api/com/sileria/android/view/HorzListView.html

 3
Author: Sileria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-09 13:59:00

W mojej aplikacji używam HorizontalScrollView zawierającego LinearLayout wewnątrz, który ma orientację ustawioną na poziomą. Aby dodać obrazy wewnątrz, tworzę ImageViews wewnątrz aktywności i dodaję je do mojego LinearLayout. Na przykład:

<HorizontalScrollView 
        android:id="@+id/photo_scroll"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:scrollbars="horizontal"
        android:visibility="gone">

        <LinearLayout 
            android:id="@+id/imageview_holder"
            android:layout_width="wrap_content"
            android:orientation="horizontal"
            android:layout_height="match_parent">

        </LinearLayout>
    </HorizontalScrollView>
Dla mnie to działa idealnie. W tym ćwiczeniu wszystko co muszę zrobić to coś w stylu poniższego kodu:
LinearLayout imgViewHolder = findViewById(R.id.imageview_holder);
ImageView img1 = new ImageView(getApplicationContext());
//set bitmap
//set img1 layout params
imgViewHolder.add(img1);
ImageView img2 = new ImageView(getApplicationContext());
//set bitmap
//set img2 layout params
imgViewHolder.add(img2); 

Jak powiedziałem, to działa dla mnie i mam nadzieję, że pomoże komuś, kto chce to osiągnąć.

 1
Author: Jorge Cespedes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-06 18:13:01

Cóż zawsze możesz dynamicznie tworzyć swoje textviews etc i ustawiać onclicklisteners tak jak zrobiłbyś to z adapterem

 0
Author: weakwire,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-14 13:35:09

HorizontialListView nie może działać, gdy dane w adapterze są zaangażowane w inny wątek. Wszystko działa w 100% na wątku UI.Jest to duży problem w multithread. Myślę, że korzystanie z programu HorizontialListView nie jest najlepszym rozwiązaniem problemu.HorzListView to lepszy sposób.Wystarczy zastąpić poprzednią galerię HorzListView.Nie musisz modyfikować kodu o adapterze.Wtedy wszystko idzie po twojej myśli.Zobacz https://stackoverflow.com/a/12339708/1525777 o HorzListView.

 0
Author: Europa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:21

Użyłem horyzontalnego linku listview w moim projekcie i uzyskałem dobre wyniki. Początkowo używałem biblioteki devsmart , ale dało mi to pewne problemy. Więc najlepszym sposobem, aby użyć poziome listview link Jak odzyskał moje problemy i również niedawno uruchomiłem moją aplikację w google PlayStore za pomocą tej biblioteki i dostał miłą odpowiedź od użytkowników. Dlatego zalecam użycie tej samej biblioteki, o której wspomniałem powyżej, aby wyświetlić listview w poziomie. Enjoy :)

 0
Author: Tiger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-29 06:57:51

Istnieje świetna biblioteka do tego, o nazwie TwoWayView, jest bardzo łatwa do wdrożenia, wystarczy dołączyć bibliotekę projektu do swojej przestrzeni roboczej i dodać ją jako projekt biblioteki do oryginalnego projektu, a następnie wykonać następujące kroki, które są pierwotnie wymienione tutaj:

Najpierw dodajmy styl wskazujący orientację ListView (poziome lub pionowe) w (res / wartości/style.xml):

<style name="TwoWayView">
    <item name="android:orientation">horizontal</item>
</style>

Then,

W układzie XML, użyj następującego kodu, aby dodać TwoWayView:

<org.lucasr.twowayview.TwoWayView 
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/lvItems"
     style="@style/TwoWayView"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:drawSelectorOnTop="false"
     tools:context=".MainActivity" />

I wreszcie, po prostu zadeklaruj to i radź sobie z tym jak każdy zwykły ListView:

TwoWayView lvTest = (TwoWayView) findViewById(R.id.lvItems);

Wszystkie metody ListView będą działać tutaj jak zwykle, ale jest tylko jedna różnica, którą zauważyłem, jest to, że podczas ustawiania trybu wyboru, metoda setChoiceMode nie przyjmuje wartości int, ale wartość z enum o nazwie ChoiceMode, więc list_view.setChoiceMode(ListView.CHOICE_MODE_SINGLE); będzie lvTest.setChoiceMode(ChoiceMode.SINGLE); // or MULTIPLE or NONE.

 0
Author: Muhammed Refaat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-04 12:03:19

Możesz użyć ViewFlipper, aby dołączyć układ XML i dodać obrazy, listview dla każdego układu XML

 -1
Author: Raju yourPepe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-31 04:36:59