Listview排行榜,前三名排名用不同图片代表

老规矩,先看图,适合你的再往下看:

这是一个listview,展示100条数据。之后是先加载10条,点击加载更多显示全部。

第一步,先写布局:

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

    <ImageView
        android:id="@+id/iv_tuition"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/dimen_10dp"
        android:scaleType="fitXY"
        android:src="@drawable/img_income"
        android:visibility="gone" />

    <com.dyh.frame.widget.AutoHeightListView
        android:id="@+id/lv_tuiton_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/dp_5"
        android:layout_marginTop="@dimen/dp_10"
        android:divider="@color/dividerColor_view"
        android:dividerHeight="@dimen/dp_0.5" />


    <TextView
        android:id="@+id/tv_more"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="@dimen/dimen_20dp"
        android:background="@color/white"
        android:gravity="center"
        android:padding="@dimen/dimen_10dp"
        android:text="查看更多"
        android:textColor="@color/app_button_price"
        android:textSize="@dimen/dimen_15sp" />

</LinearLayout>

以上是一个图片显示排行榜,其次是listview,最后是一个Textview用来加载全部数据。

接下来就是代码:

Activity:

private TextView mTvmore;
private ImageView mIvtuition;
mTvmore = (TextView) findViewById(R.id.tv_more);//查看更多
mTvmore.setOnClickListener(this);
mIvtuition = (ImageView) findViewById(R.id.iv_tuition);//收入榜图片
@Override加载更多的点击事件
public void onClick(View v) {
    switch (v.getId()) {
        //排行榜显示更多
        case R.id.tv_more:
            //要对适配器和listview进行判空,否则会出现空指针
            if (incoAdapter != null) {
                if (!ListUtil.isNullOrEmpty(list1listview)) {
                    if (isShort) {
                        incoAdapter.setDataList(list1listview);
                        mTvmore.setText("收起");
                        isShort = false;
                    } else {
                        incoAdapter.setDataList(list1listview.subList(0, 10));
                        mTvmore.setText("查看更多");
                        isShort = true;
                    }
                }

}
/**
 * 网络请求排行榜listview列表解析显示
 */
private void reqDatalist() {
    DefaultStringRequestNew req = new DefaultStringRequestNew(mContext, HostStudentNew.EARN_TUITION_INCOM, new ResponseListenerNew(mContext) {
        @Override
        public void onSuccess(String response) {
            //解析其余详情数据
            IncomeBean incoBean = JsonUtils.fromJson(response, IncomeBean.class);
            if (incoBean != null) {
                if (incoBean.getResult() == 0) {
                    mIvtuition.setVisibility(View.VISIBLE);
                    list1listview = incoBean.getData();
                    if (!ListUtil.isNullOrEmpty(list1listview)) {
                        initMore();
                    }
                } else {
                    showToast(incoBean.getMessage());
                }
            }
            mScroller.post(new Runnable() {
                @Override
                public void run() {
                    mScroller.scrollTo(0, 0);
                }
            });
        }
    });
    VolleyUtil.getInstance().addToRequestQueue(req);
}

private void initMore() {
    /*
    * 判断listview长度,当条目长度大于10只加载10条,不足十条全部显示,设置到适配器
    * */
    if (list1listview.size() > 10) {
        incoAdapter = new IncomeAdapter(mContext, list1listview.subList(0, 10));
        mTvmore.setVisibility(View.VISIBLE);
        isShort = true;
    } else {
        incoAdapter = new IncomeAdapter(mContext, list1listview);
        mTvmore.setVisibility(View.GONE);
    }
    mLvtuitonlist.setAdapter(incoAdapter);
}

最后是适配器:
首先适配器布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/white"
    android:padding="@dimen/dimen_8dp">

    <TextView
        android:id="@+id/tv_incom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/dimen_7dp" />

    <com.itheima.roundedimageview.RoundedImageView
        android:id="@+id/user_icon"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginLeft="@dimen/dimen_45dp"
        android:scaleType="fitXY"
        app:riv_oval="true"
        android:src="@drawable/icon_default_head" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="@dimen/dimen_10dp"
        android:layout_toRightOf="@+id/user_icon"
        android:gravity="center_vertical"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv_username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="九悦"
            android:textColor="@color/tc_gray_3"
            android:maxLength="10"
            android:ellipsize="end"
            android:textSize="@dimen/dimen_14sp" />

        <TextView
            android:id="@+id/tv_phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="18810762963"
            android:textColor="@color/tc_gray_3"
            android:textSize="@dimen/dimen_14sp" />

    </LinearLayout>


    <TextView
        android:id="@+id/tv_price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="@dimen/dimen_10dp"
        android:text="10000.00元"
        android:textColor="@color/tc_gray_3"
        android:textSize="@dimen/dimen_14sp" />


</RelativeLayout>


适配器代码:
package com.dyhoa.school.uinew.adapter;

import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.dyh.common.utils.DisplayOption;
import com.dyh.frame.simple.AbstractAdapter;
import com.dyhoa.school.R;
import com.dyhoa.school.uinew.earnmoney.bean.IncomeBean;
import com.dyhoa.school.utils.MathUtil;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * 排行榜适配器
 * Created by ljg on 2018/10/31.
 */

public class IncomeAdapter extends AbstractAdapter<IncomeBean.DataEntity> {

    public IncomeAdapter(Context mContext, List<IncomeBean.DataEntity> dataList) {
        super(mContext, dataList);
    }

    @Override
    public int getListViewItemId() {
        return R.layout.item_tuitionlisr;
    }

    @Override
    public void convert(int position, View convertView, IncomeBean.DataEntity dataItem) {

        TextView mTvusername = convertView.findViewById(R.id.tv_username);//姓名
        TextView mTvphone = convertView.findViewById(R.id.tv_phone);//手机号
        TextView mTvprice = convertView.findViewById(R.id.tv_price);//实体价格
        ImageView mUsericon = convertView.findViewById(R.id.user_icon);//头像
        TextView mTvincom = convertView.findViewById(R.id.tv_incom);//数字排名

        ImageLoader.getInstance().displayImage(dataItem.getIcon(), mUsericon, DisplayOption.getBannerOptions());
        mTvusername.setText(dataItem.getUsername());
        mTvprice.setText(MathUtil.round(dataItem.getTotal(), 2) + "元");
        if (!TextUtils.isEmpty(dataItem.getMobile())) {
            String maskNumber = dataItem.getMobile().substring(0, 3) + "****" + dataItem.getMobile().substring(7, dataItem.getMobile().length());
            mTvphone.setText(maskNumber);
        }

        if (dataItem.getOrderNumber() == 1) {
            mTvincom.setBackgroundResource(R.drawable.img_one);
            mTvincom.setText("");
        } else if (dataItem.getOrderNumber() == 2) {
            mTvincom.setBackgroundResource(R.drawable.img_two);
        } else if (dataItem.getOrderNumber() == 3) {
            mTvincom.setBackgroundResource(R.drawable.img_three);
        } else {
            mTvincom.setBackgroundResource(R.color.white);
            mTvincom.setText(" " + dataItem.getOrderNumber());
        }
    }

}



好了,这就是主要代码了,有不全的可以问我。感谢大家支持

猜你喜欢

转载自blog.csdn.net/zhangkaiyazky/article/details/84228109