如何使列表视图只显示3个项目

时间:2011-11-11 05:52:24

标签: android listview scroll

我有一个列表视图,其中我正在加载10个项目。

滚动时我只想看到3个项目。

我不想通过调整列表高度来做到这一点,即使我滚动很少,我也只想显示3个项目(意味着没有项目应该部分显示)。

如何实现这一目标??

提前致谢..!

2 个答案:

答案 0 :(得分:2)

我将发布一个代码,用于在滚动事件中填充10条记录。

  /**
     * Called when the activity is first created.
     * 
     * @param savedInstanceState
     *            the saved instance state
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.view_checkin_checkout_history);

             Thread thread = new Thread() {

            public void run() {

                       synchronized (this) {
                    fetchHistory(0);

                    handler.post(new Runnable() {
                        public void run() {
                            pd.dismiss();

                            displayUI();
                        };
                    });
                }
            }
        };

        thread.start();
         }

       /**
     * Display the check in check out history list.
     */
    private void displayUI() {
        if ((checkInCheckOutHistoryList != null)
                && (checkInCheckOutHistoryList.size() > 0)) {
            historyArrayList = new ArrayList<HashMap<String, String>>();

            histroyListAdapter = new SimpleAdapter(
                    ViewCheckInCheckOutHistory.this, historyArrayList,
                    R.layout.multi_colummn_list_text_style_small, new String[] {
                            "assetTag", "gif" , "action", "actionTime"},
                    new int[] { R.id.list_content_column1,
                            R.id.list_content_imagecolumn,
                            R.id.list_content_column3,
                            R.id.list_content_column4});

            // To add more items to list view on scroll event.
            historyListView.setOnScrollListener(new OnScrollListener() {

                @Override
                public void onScrollStateChanged(AbsListView view,
                        int scrollState) {
                }

                @Override
                public void onScroll(AbsListView view, int firstVisibleItem,
                        int visibleItemCount, int totalItemCount) {

                    int lastInScreen = firstVisibleItem + visibleItemCount;

                    if ((lastInScreen == totalItemCount) && !(loadingMore) && (lastInScreen < totalHistoryItemCount)) {

                        if (!firstInstance) {
                            openSlider();                           
                        }                           

                        fetchHistory(lastInScreen);     

                        Thread thread = new Thread(null, loadMoreListItems);
                        thread.start();
                    }
                }
            });
                     }
                  }

// Runnable to load the items

    private Runnable loadMoreListItems = new Runnable() {

        @Override
        synchronized public void run() {
            // Set flag so we cant load new items 2 at the same time
            loadingMore = true;

            HashMap<String, String> historyObjectMap;

            for (CheckInCheckOutHistory checkOutHistoryObj : checkInCheckOutHistoryList) {
                historyObjectMap = new HashMap<String, String>();
                historyObjectMap.put("assetTag",
                        checkOutHistoryObj.getAssetTag());
                historyObjectMap.put("action", checkOutHistoryObj.getAction());
                historyObjectMap.put("actionTime",
                        checkOutHistoryObj.getActionDate());

                if (checkOutHistoryObj.getAction().equals("Checked out")) {
                    historyObjectMap.put("gif", R.drawable.radio_button_yellow
                            + "");
                } else {
                    historyObjectMap.put("gif", R.drawable.radio_button_green
                            + "");
                }

                historyArrayList.add(historyObjectMap);
            }

            runOnUiThread(returnRes);
        }
    };

    // Since we cant update our UI from a thread this Runnable takes care of
    // that!
    private Runnable returnRes = new Runnable() {
        @Override
        public void run() {

            // Add the new items to the adapter
            if (historyArrayList != null && historyArrayList.size() > 0) {
                histroyListAdapter.notifyDataSetChanged();
            }

            if (firstInstance) {
                historyListView.setAdapter(histroyListAdapter);
                firstInstance = false;
            }

            historyListLayout.setVisibility(View.VISIBLE);

            // Done loading more.
            loadingMore = false;

            if ((slidingDrawer.isOpened()) && (!loadingMore)) {

                handler.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        slidingDrawer.close();
                        slidingDrawer.setVisibility(View.GONE);
                    }
                }, 1000);

            }
        }
    };


fetchHistory(int count)是我用来设置totalHistoryItemCount&amp;的价值的方法。 checkInCheckOutHistoryList

希望这会有所帮助。

答案 1 :(得分:0)

除了这三个项目在滚动时使所有其他项目不可见。再次滚动后可以看到。