ChatGPT解决这个技术问题 Extra ChatGPT

Android中的水平ListView?

是否可以使 ListView 水平?我已经使用图库视图完成了此操作,但所选项目会自动出现在屏幕中央。我不希望所选项目位于我单击的同一位置。我该如何解决这个问题?我的想法是用水平滚动设置 ListView。分享你的想法?

使用我帖子的 this 链接创建水平列表视图,希望对您有所帮助。
@Indra 你提到的那个博客已被删除
您可以查看此示例 thedeveloperworldisyours.com/android/…

H
H. Pauwelyn

根据 Android 文档 RecyclerView 是在列表视图中组织项目并水平显示的新方法

优点:

由于使用了 Recyclerview Adapter,自动实现 ViewHolder 模式动画易于执行更多功能

关于 RecyclerView 的更多信息:

grokkingandroid.com antonioleiva.com

样本:

survivingwithandroid.com

只需添加以下块即可使 ListView 从垂直变为水平

代码片段

LinearLayoutManager layoutManager= new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(layoutManager);

如果 LayoutManager 的问题由谷歌修复,这将是最好的解决方案。 code.google.com/p/android/issues/detail?id=74772
要构建一个简单的回收器视图,请使用以下示例:android-examples.com/…
好的,小部件的方式是什么?
与其他适配器支持的视图(如 ListView 或 GridView)相比,RecyclerView 允许客户端代码为子视图提供自定义布局安排。这些安排由 RecyclerView.LayoutManager 控制。必须为 RecyclerView 提供 LayoutManager 才能正常工作。
RecyclerView 仍然不能像 ListView 一样好和容易地处理对项目的点击(不要提到 RecyclerView.Selection 类)——这是我认为 RecyclerView 不是这个问题的最佳答案的少数原因之一。
M
Malachiasz

Paul 不会费心修复他的库的错误或接受用户修复。这就是为什么我建议另一个具有类似功能的库:

https://github.com/sephiroth74/HorizontalVariableListView

更新:2013 年 7 月 24 日作者 (sephiroth74) 发布了基于 android 4.2.2 ListView 代码完全重写的版本。我必须说它没有以前版本的所有错误并且效果很好!


这应该是一个公认的答案,因为这个 HorizontalVariableListView 比 Paul 的要先进得多。例如,它有一个适当的方法来选择列表中的位置,Paul 的方法有“TODO:在某天实现”。
请注意,此解决方案需要 android 2.3 或更高版本
sephiroth74 的 HorizontalVariableListView 正是您希望的那样:来自 android 源代码的 ListView 的副本,其中所有方法都更新为水平移动而不是垂直移动。我还没有遇到任何问题。非常感谢你把我带到那里,玛拉基亚斯!
这个库仍然不支持将 wrap_content 到 listview
有谁能够弄清楚如何将 wrap_content 用于 layout_height?使用 wrap_content 时它会弄乱一切
X
Xavi Gil

@Paul 回答链接到一个很好的解决方案,但代码不允许在子项上使用 onClickListeners (永远不会调用回调函数)。我一直在努力寻找解决方案,我决定在这里发布您需要在该代码中修改的内容(以防有人需要)。

而不是覆盖 dispatchTouchEvent 覆盖 onTouchEvent。使用 dispatchTouchEvent 的相同代码并删除方法(您可以在此处阅读两者的区别 http://developer.android.com/guide/topics/ui/ui-events.html#EventHandlers

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

然后,添加以下代码,该代码将决定从子项中窃取事件并将其提供给我们的 onTouchEvent,或者让它们处理。

@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);
    }
}

最后,不要忘记在你的类中声明变量:

private float mInitialX;
private float mInitialY;

为什么不将此作为拉取请求发送给 Paul?
ev.getActionMasked() 在 android 2.1 平台上不可用。你知道如何克服这个吗?
似乎我可以使用 int maskedAction = ev.getAction() & MotionEvent.ACTION_MASK 应该等于 ev.getMaskedAction()
真的好用!但是将代码更改为 onTouchEvent 我得到了一个奇怪的偏移量。我将它保存在 dispatchTouchEvent 中,它运行良好!谢谢
jbc25 我可以确认如果使用此修复程序会发生奇怪的跳转
k
klimat

由于 Google 推出了 Android Support Library v7 21.0.0,您可以使用 RecyclerView 水平滚动项目。 RecyclerView 小部件是 ListView 的更高级和灵活的版本。

要使用 RecyclerView,只需添加依赖项:

com.android.support:recyclerview-v7:23.0.1

这是一个示例:

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);
    }
}

有关 RecyclerView 的更多信息:

https://developer.android.com/training/material/lists-cards.html

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html


K
KimKha

这有点(非常)晚了,但我会发布这个,以防以后有人来。

Android L 预览版的支持库有一个 RecyclerView,可以满足您的需求。

目前,您只能通过 L 预览版 SDK 获取它,并且您需要将您的 minSdk 设置为 L。但是您可以将所有必要的文件复制到您的项目中并以这种方式使用它们,直到 L 正式推出。

您可以下载预览文档 here

警告:Recycler View 的 API 可能会更改并且可能存在错误。

更新

水平列表视图的源代码是:

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

RecyclerView myList = findViewById(R.id.my_recycler_view);
myList.setLayoutManager(layoutManager);

嗨,它有效吗?因为我尝试了,但我无法制作水平 RecyclerView。你能放一些代码吗?谢谢
只需设置 LinearLayoutManager - 请参见此处:stackoverflow.com/questions/28460300/…
但是绑定自定义视图有很多空格,宽度不是Wrap Content,CustomView Items后面有很多空格。有什么解决办法吗?
S
Siddhpura Amit

here 下载 jar 文件

现在将其放入您的 libs 文件夹,右键单击它并选择“添加为库”

现在在 main.xml 中放置这段代码

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

现在在 Activity 类中,如果您想要带图像的水平列表视图,然后输入此代码

  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;
}

它不支持任何选择器或任何自定义选择器?任何想法?
我可以添加数字数组而不是图像吗?
@BeingSrv 是的,你可以
将其放入 libs 文件夹后,右键单击它并点击“添加为库”
如何在脉冲中开发水平列表视图列表,bbcnews 请帮助我
D
Dmitry Ryadnenko

它实际上非常简单:只需将列表视图旋转到一边

mlistView.setRotation(-90);

然后在给孩子充气时,应该在 getView 方法内。你旋转孩子们站直:

 mylistViewchild.setRotation(90);

编辑:如果您的 ListView 在旋转后不合适,请将 ListView 放置在此 RotateLayout 中,如下所示:

 <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>

我试过了——没那么简单。我没有设法使旋转视图适合屏幕宽度和高度。此 API 仅在新设备中可用。
在旋转之前,将 listViews 宽度设置为屏幕高度并将 listviews 高度设置为屏幕宽度..(即如果您希望 listview 填充屏幕)否则在旋转之前将 listview 设置为您想要的任何高度和宽度.
你一直在尝试你说的话吗?我有,但这些都不起作用。
您是否尝试在旋转后更改值?我不明白为什么它不应该工作。 (如果您想知道旋转后如何知道先前的高度和宽度值,您可以在旋转前将它们保存在变量中,然后在旋转后应用它们。
这个库的新版本( stackoverflow.com/a/16589629/2075875 )完成了它应该做的工作,并且在 android 2.3 上工作,而 setRotation() 从 3.0 开始可用,所以我不想再玩旋转了,但我鼓励你自己尝试一下目前的工作代码。
f
fraggjkee

我的解决方案是简单地使用 ViewPager 小部件。它不像 Gallery 那样被中心锁定,并且具有用于回收视图的内置功能(如 ListView)。每当您处理水平滚动列表时,您可能会在 Google Play 应用程序中看到类似的方法。

您只需要扩展 PagerAdapter 并在那里执行一些调整:

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;
    }
}

https://i.stack.imgur.com/fUPP0.png


它像 ListView 一样可滚动,但在水平方向。我看到的唯一区别:项目一个接一个地滚动,所以不可能滚动到下一个项目的中间。但这就是 ViewPager 的工作方式。
A
Abdul Aziz

注意:Android 现在支持使用 RecyclerView 的水平列表视图,因此现在不推荐使用此答案,以获取有关 RecyclerView 的信息:https://developer.android.com/reference/android/support/v7/widget/RecyclerView

我已经开发了一个逻辑来做到这一点,而无需使用任何外部水平滚动视图库,这是我实现的水平视图,我在这里发布了我的答案:https://stackoverflow.com/a/33301582/5479863

我的 json 响应是这样的:

{"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"}]}}

布局文件:

    <?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>

类文件:

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;
    }

在这里工作的技巧是我分配给 ImageView "imgView.setId(v)" 的 id,然后将 onClickListener 应用到该 ID 上,我再次获取视图的 id....我还在代码中进行了评论,所以它易于理解,我希望这可能非常有用......快乐编码...... :)

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


我已经在这里编辑并发布了完整的解释,感谢您的建议:)
您好,感谢您的代码,您可以发布方法 getPixelsToDP() 吗?
@Skizo我已经在java代码末尾添加了那个方法,看看
F
Faisal

这不是一个很好的答案,但是使用 Horizontal Scroll View 怎么样?


有用。但是如果我有大量的项目,那么就不能使用适配器类型的东西和点击事件。
m
mobileideafactory

您可以在支持库中使用 RecyclerView。 RecyclerView 是 ListView 的通用版本,它支持:

用于定位项目的布局管理器

常见项目操作的默认动画

Android Recycler View Docs


这是截至目前为止的真正答案。但即使这还没有准备好,仍处于“预览”阶段
C
Community

我已经做了很多寻找解决这个问题的方法。简短的回答是,如果不覆盖私有方法之类的东西,就没有好的解决方案。我发现最好的办法是通过扩展 AdapterView 从头开始自己实现它。真是太惨了。请参阅我的 SO question about horizontal ListViews


可悲的是,您的答案是正确的。甚至谷歌也确认水平列表视图的唯一方法是图库。但 Gallery 与水平列表视图不同。你愿意分享你的代码吗?你回收视图吗?
不幸的是,代码是为我的公司编写的,因此是专有的。但是,我确实希望在接下来的几个月中找到一些空闲时间来重写它(最初的实现非常不稳定)并将其发布到公共领域。我还可以告诉您,我从索尼爱立信的 this demo 开始,将所有“x”更改为“y”,将所有“宽度”更改为“高度”。然后我删除了 3D 变换并添加了在结束时停止的行为。
@Neil Traft 你是如何固定物品位置的?最后停下来怎么办?
老实说,这真的只是很多猜测。花了很长时间才把它弄好,我相信有更好的方法。但基本前提是,在 fillListDown() 方法中,您需要跟踪最后一个列表项的底部边缘。但是在您实际创建最后一项 (adapter.getCount()-1) 之前,您不知道该边缘在哪里。所以你等到该项目被创建,然后你可以存储边缘的位置。一旦知道这一点,就可以确保 mListTop 永远不会小于 0 并且永远不会超过列表的高度。
如果你不是真的,真的,绝对需要一个横向列表,我强烈建议你放弃,或者使用图库。
S
Sileria

我必须为我的一个项目做同样的事情,最后我也写了自己的。我称它为 HorzListView 现在是我的开源 Aniqroid 库的一部分。

http://aniqroid.sileria.com/doc/api/(在底部查找下载或使用谷歌代码项目查看更多下载选项:http://code.google.com/p/aniqroid/downloads/list

课程文档在这里:http://aniqroid.sileria.com/doc/api/com/sileria/android/view/HorzListView.html


如何以编程方式设置滚动位置?
setSelection() 方法存在,但可能没有 100% 实现。试试看。
J
Jorge Cespedes

对于我的应用程序,我使用了一个包含 LinearLayout 的 HorizontalScrollView,它的方向设置为水平。为了在里面添加图像,我在 Activity 中创建 ImageViews 并将它们添加到我的 LinearLayout 中。例如:

<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>

这对我来说非常好。在活动中,我所要做的就是如下代码:

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); 

正如我所说,这对我有用,我希望它也能帮助那些希望实现这一目标的人。


w
weakwire

好吧,您始终可以动态创建文本视图等,并像使用适配器一样设置 onclicklisteners


你是什么意思?我不能得到你?请发布有关您的想法的代码片段?
请告诉我“水平列表视图”的目的它会有复杂的/多视图吗?例如 2 个文本框 1 个进度条?或者只是说纯文本?您在该视图中是否有固定数量的元素,或者您想动态更改它?回答我这些,我将能够帮助您编写代码
我想做水平文本库。但所选项目默认居中。我想成为选定的项目必须是我点击的地方。另请查看我的帖子:stackoverflow.com/questions/3237566/text-gallery-on-androidstackoverflow.com/questions/3318617/…
C
Community

当适配器中的数据涉及到另一个线程时,HorizontialListView 无法工作。一切都在 UI 线程上运行 100%。这是多线程中的一个大问题。我认为使用HorizontalListView不是解决您问题的最佳方法。HorzListView是一种更好的方法。您只需将以前的Gallery替换为HorzListView即可。您无需修改有关适配器的代码。然后一切都按您希望的方式进行。请参阅https://stackoverflow.com/a/12339708/1525777关于HorzListView。


T
Tiger

我在我的项目中使用了 horizontal listview link我得到了很好的结果。我最初使用过 devsmart 库,但它给了我一些问题。使用 horizontal listview link 的最佳方式,因为它恢复了我的问题 &我最近也使用这个库在 Google PlayStore 上启动了我的应用程序 &得到了用户的好评。所以我建议你使用我上面提到的同一个库来水平显示列表视图。享受 :)


M
Muhammed Refaat

有一个很棒的库,称为 TwoWayView,它很容易实现,只需将项目库包含到您的工作空间中并将其作为库项目添加到您的原始项目中,然后按照以下最初的步骤{ 2}:

首先,让我们在 (res/values/styles.xml) 中添加一个样式,指示 ListView 的方向(水平或垂直):

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

然后,

在您的布局 XML 中,使用以下代码添加 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" />

最后,只需声明它并像任何常规 ListView 一样处理它:

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

ListView 的所有方法都将照常在这里工作,但我注意到只有一个区别,即在设置选择模式时,方法 setChoiceMode 不采用 int 值,而是采用 enum 中的值调用ChoiceMode,所以 list_view.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 将是 lvTest.setChoiceMode(ChoiceMode.SINGLE); // or MULTIPLE or NONE


我试过这个 - 但它不允许我使用我自己的 ArrayAdapter
R
Raju yourPepe

您可以使用 ViewFlipper 来包含布局 XML 并为每个布局 XML 添加图像、列表视图