【问题标题】:Infinite Listview in an HorizonzalScrollView in AndroidAndroid 中 Horizo​​nzalScrollView 中的无限列表视图
【发布时间】:2023-03-07 03:58:01
【问题描述】:

我正在开发一个 Android 应用程序,它的一个用例是显示以下情况。

  1. 我有一个链接列表 (L)。这些链接中的每一个都是一个 URL 互联网上的图片;
  2. 我必须下载 (L) 的每张图片并将其显示在 ListView 中。 ListView(s) 中应该有两行,我可以在其中插入图片。我想做类似this app的事情;
  3. 我必须在 Horizo​​ntalScrollView 中显示图片;
  4. 图片必须按需下载,也就是说,我只是 当 Horizo​​ntalScrollView 为 在显示此图片的位置(类似于this situation)。

我的问题:

  1. 是否可以在 Horizo​​ntalScrollView 中插入 ListView? (如果是,我该怎么做?)
  2. 如何使用 Horizo​​ntalScrollView?我的意思是,我在 ScrollView 中使用 ListView 的方式有什么不同吗?

  3. 你知道任何具有相同目的的插件/项目吗?

【问题讨论】:

    标签: android android-listview horizontal-scrolling horizontalscrollview infinite-scroll


    【解决方案1】:

    问题 1 - 或许您应该重新考虑您的设计以使用 HorizonzalListView 列表。
    问题 2 - 您可以通过编程方式创建 Horizo​​ntialListView 列表,将它们放置在由垂直滚动视图包裹的 LinearLayout 中。

    你的 myhlist.xml 布局:

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
    
      <LinearLayout android:id="@+id/list_of_hlist_placeholder"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center_horizontal"/>
    
    </ScrollView>
    

    你的活动:

    public class ListOfHListlActivity extends Activity {
    
    /** List of ArrayAdapter with each bind to a HorizontialListView created programmatically */
    private List<MyAdapter> myAdapters = new ArrayList<MyAdapter>();
    /** List of your data model */
    private List<Object> myDataList;
    
    /**
     * Worker thread running in background doing dirty job.
     */
    private class DoDirtyJobAsyncTask extends AsyncTask<Void, MyAdapter, Void> {
    
        @Override
        protected Void doInBackground(Void... params) {
        // do your dirty job here, to populate myDataList
            for (Object myData : myDataList) {
                MyAdapter myAdapter = new MyAdapter(myData);
                myAdapters.add(myAdapter);
                publishProgress(myAdapter);
            }
            return null;
        }
    
        @Override
        protected void onProgressUpdate(MyAdapter... myAdapters) {
            int currViewId = 1;
            for (final MyAdapter myAdapter: myAdapters) {
                HorizontialListView listview = new HorizontialListView(getApplicationContext(), null);
                listview.setId(currViewId);
                listview.setAdapter(myAdapter);
                listview.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                    // I am clickable.
                    }
                });
    
                RelativeLayout listOfHListLayout = (RelativeLayout) findViewById(R.id.list_of_hlist_placeholder);
                // don't forget set height here, you know the height issue in HorizontialListView
                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
                        RelativeLayout.LayoutParams.FILL_PARENT, 40);
                listOfHListLayout.addView(listview, layoutParams);
                currViewId++;
            }
        }
    
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        new DoDirtyJobAsyncTask().execute();
        setContentView(R.layout.myhlist);
    }
    

    }

    【讨论】:

    • 我如何“以编程方式创建一个 Horizo​​ntialListView 列表,将它们放置在由垂直滚动视图包裹的 LinearLayout 中。” ?
    【解决方案2】:

    您可能对此项目感兴趣http://www.dev-smart.com/archives/34 它谈到了在没有 Gallery 小部件的中心锁定的情况下在 Android 中实现 Horizo​​ntal ListView

    【讨论】:

      【解决方案3】:

      可能为时已晚,但现在android有RecylerView,它比Listview更高效,还支持水平滚动。

      【讨论】:

        猜你喜欢
        • 2014-12-12
        • 1970-01-01
        • 2012-07-24
        • 2011-09-21
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多