亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建一個封閉(循環)ListView?

如何創建一個封閉(循環)ListView?

江戶川亂折騰 2019-11-20 17:13:51
如何創建一個封閉(循環)ListView?我想創建一個自定義的ListView(或類似的),其行為類似于封閉(循環)的:向下滾動 - 在到達最后一個項目后第一個開始(..,n-1,n,1,2,...)向上滾動 - 在第一個項目到達后,最后一個開始(...,2,1,1,n,n-1,..)這在概念上聽起來很簡單,但顯然,沒有直接的方法來做到這一點。誰能指出我正確的解決方案?謝謝 !我已經收到一個答案(來自Streets Of Boston的Android開發者谷歌團體),但聽起來有些丑陋:) -我這樣做是通過創建自己的列表適配器(從BaseAdapter子類)。我編寫了自己的列表適配器,其getCount()方法返回一個HUUUUGE編號。如果選擇項'x',則此項對應于適配器位置='adapter.getCount()/ 2 + x'對于我的適配器的方法getItem(int position),我查看我的數組備份適配器并獲取索引上的項目:(position-getCount()/ 2)%myDataItems.length你需要做一些更“特殊”的東西才能使它完全正常工作,但你明白了。原則上,它仍然可以到達列表的結尾或開頭,但如果你將getCount()設置為大約一百萬左右,這很難做到:-)
查看完整描述

3 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

你提到的解決方案是我告訴其他開發人員過去使用的解決方案。在getCount()中,只需返回Integer.MAX_VALUE,它將為您提供大約20億個項目,這應該足夠了。

查看完整回答
反對 回復 2019-11-21
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

基于上面的答案,我有,或者我認為我做得對。希望這會幫助你。

private static class RecipeListAdapter extends BaseAdapter {
    private static LayoutInflater   mInflater;
    private Integer[]               mCouponImages;
    private static ImageView        viewHolder;
    public RecipeListAdapter(Context c, Integer[] coupomImages) {
        RecipeListAdapter.mInflater = LayoutInflater.from(c);
        this.mCouponImages = coupomImages;
    }
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public Object getItem(int position) {
       // you can do your own tricks here. to let it display the right item in your array.
        return position % mCouponImages.length;
    }

    @Override
    public long getItemId(int position) {
        return position;
        // return position % mCouponImages.length;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.coupon_list_item, null);
            viewHolder = (ImageView) convertView.findViewById(R.id.item_coupon);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ImageView) convertView.getTag();
        }

        viewHolder.setImageResource(this.mCouponImages[position %     mCouponImages.length]);
        return convertView;
    }}

如果你想向下滾動列表,你想這樣做。通常我們可以向上滾動并列出然后向下滾動。

//查看我們想要滾動的項目數量。在這種情況下,Integer.MAX_VALUE

int listViewLength = adapter.getCount();// see how many items a screen can dispaly, I use variable "span"
    final int span = recipeListView.getLastVisiblePosition() - recipeListView.getFirstVisiblePosition();

//查看我們有多少頁面

int howManySpans = listViewLength / span;

//在啟動列表視圖時查看您想要的位置。你不必做“-3”的事情。這是我的應用程序正常工作。

recipeListView.setSelection((span * (howManySpans / 2)) - 3);



查看完整回答
反對 回復 2019-11-21
  • 3 回答
  • 0 關注
  • 375 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號