2011-11-11 100 views
1

我有一个列表视图,其中我正在加载10个项目。如何使列表视图只显示3个项目

我只需要滚动显示3个项目。

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

如何实现这个...?

在此先感谢..!

+1

检查此:http://stackoverflow.com/questions/6573489/android-endless-scrolling-listview-and-cursor/6759834#6759834希望这会解决您的问题。 – Ian

+0

@ Amy88将此评论作为答复...! – Noby

+0

当我尝试添加这个答案时,它会自动转换为注释,显示**“将简单答案转换为注释”**。 Anway感谢Noby。很高兴知道我可以帮助你。 – Ian

回答

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)是我用于为totalHistoryItemCountcheckInCheckOutHistoryList &设置的值的方法。

希望这会有所帮助。

0

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

+0

http://developer.android.com/reference/android/view/View.html#GONE获取更多信息。 – Pedantic

相关问题