在项目中遇到的一个效果,看图:
就是一个Listview列表主要用到了一个方法istview.subList(0, 3);
看代码:
这是Activity:
package com.dyh.drivingschool.ui.shopnew;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import com.android.volley.Request;
import com.dyh.drivingschool.R;
import com.dyh.drivingschool.global.HostStudentNew;
import com.dyh.drivingschool.loader.UniverImageLoader;
import com.dyh.drivingschool.ui.shop.customclass.PaperDialog;
import com.dyh.drivingschool.ui.shopnew.adapter.CarNewListviewAdapter;
import com.dyh.drivingschool.ui.shopnew.bean.NewCarDetailsBean;
import com.dyh.drivingschool.utils.MathUtil;
import com.dyh.frame.BaseFragmentActivity;
import com.dyh.frame.util.JsonUtils;
import com.dyh.frame.util.SharedPreferencesUtil;
import com.dyh.frame.widget.AutoHeightListView;
import com.dyh.library.base.net.DefaultErrorListener;
import com.dyh.library.base.net.DefaultStringRequestNew;
import com.dyh.library.base.net.ResponseListenerNew;
import com.dyh.library.base.net.VolleyUtil;
import com.dyh.library.globle.Key;
import com.dyh.library.util.BaseUtils;
import com.gyf.barlibrary.ImmersionBar;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import java.util.ArrayList;
import java.util.List;
/**
* 新车详情
* Created by ljg on 2018/6/15.
*/
public class CarDetailNewActivity extends BaseFragmentActivity implements View.OnClickListener {
//车辆banner图集合
private List<NewCarDetailsBean.DataEntity.ModelEntity.ImgEntity> img;
//
private List<NewCarDetailsBean.StoreEntity> list1listview = new ArrayList<>();
private Banner mMybanner; //Banner轮播图
private ImmersionBar mImmersionBar;
private ImageView mIvback; //返回
private ImageView mIvlove; //爱心
private ImageView mIvshare; //分享
private TextView mTv_car_new_names; //标题
private TextView mTv_car_new_prices; //指导价
private TextView mTv_new_more; //更多经销商
private TextView mTv_new_configintent; //详情配置跳转
private RelativeLayout mRel_show_car_config; //查看详细配置参数
private PaperDialog paperDialog; //自定义的Dialog
private RelativeLayout mRelat_visibi; //数据的显示和隐藏
private ImageView mIv_store_image; //数据的显示和隐藏
private CarNewListviewAdapter adapterlv;
private AutoHeightListView mLv_car_list_offer;
private ScrollView mScroller;
private int modelId;//汽车id
private LinearLayout mLin_more;
private RelativeLayout mRel_more;
private SharedPreferencesUtil spUtil = BaseUtils.getShareFile();
private boolean isShort = true;
private NewCarDetailsBean.DataEntity.ModelEntity model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_car_detail_new);
modelId = getIntent().getIntExtra("modelId", 0);
initView();
initAdapter();
reqData();
mImmersionBar = ImmersionBar.with(this);
mImmersionBar.init();
}
private void initMore() {
if (list1listview.size() > 3) {
adapterlv = new CarNewListviewAdapter(mContext, list1listview.subList(0, 3));
mLin_more.setVisibility(View.VISIBLE);
isShort = true;
} else {
adapterlv = new CarNewListviewAdapter(mContext, list1listview);
mLin_more.setVisibility(View.GONE);
}
mLv_car_list_offer.setAdapter(adapterlv);
mLv_car_list_offer.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
NewCarDetailsBean.StoreEntity entity = (NewCarDetailsBean.StoreEntity) parent.getAdapter().getItem(position);
Intent intent = new Intent(CarDetailNewActivity.this, CarShopDetailNewActivity.class);
intent.putExtra("storeId", entity.getStore_id());
startActivity(intent);
}
});
if (list1listview != null && list1listview.size() > 1) {
mRel_more.setVisibility(View.VISIBLE);
} else {
mRel_more.setVisibility(View.GONE);
}
}
private void initAdapter() {
// adapterlv = new CarNewListviewAdapter(mContext, list1listview);
// mLv_car_list_offer.setAdapter(adapterlv);
}
private void reqData() {
String path = HostStudentNew.CAR_NEW_DETAILS + "?modelId=" + modelId + "&cityId=" + spUtil.getValueByKey(Key.CITY_CODE, "") + "&xcode=" + spUtil.getValueByKey("latitude_city", 0f) + "" + "&ycode=" + spUtil.getValueByKey("longitude_city", 0f) + "";
DefaultStringRequestNew req = new DefaultStringRequestNew(Request.Method.GET, path, new ResponseListenerNew(mContext) {
@Override
public void onSuccess(String response) {
mRelat_visibi.setVisibility(View.VISIBLE);
mIv_store_image.setVisibility(View.GONE);
//解析其余详情数据
NewCarDetailsBean detailsBean = JsonUtils.fromJson(response, NewCarDetailsBean.class);
if (detailsBean != null && detailsBean.getData() != null) {
NewCarDetailsBean.DataEntity data = detailsBean.getData();
model = data.getModel();
img = model.getImg();//加载Banner轮播图
initBanner();
mTv_car_new_names.setText(model.getShowName());//汽车标题
mTv_car_new_prices.setText(MathUtil.round(model.getPrice(), 2) + " " + model.getCurrencyUnit());
list1listview = new ArrayList<>();
List<NewCarDetailsBean.StoreEntity> attrList = data.getStore();//listview集合添加数据
if (attrList != null && attrList.size() > 0) {
for (int i = 0; i < attrList.size(); i++) {
NewCarDetailsBean.StoreEntity bean = attrList.get(i);
list1listview.add(bean);
}
}
initMore();
}
mScroller.post(new Runnable() {
@Override
public void run() {
mScroller.scrollTo(0, 0);
}
});
}
}, new DefaultErrorListener());
req.initLoadingDialog(mContext);
VolleyUtil.getInstance().addToRequestQueue(req);
}
//
/*
* Banner轮播图
* */
private void initBanner() {
List<String> lists = new ArrayList<>();
List<String> listbanner = new ArrayList<>();
if (img != null && img.size() > 0) {
for (int i = 0; i < img.size(); i++) {
lists.add(img.get(i).getImg_url());
listbanner.add("");
}
} else {
lists.add("");
listbanner.add("");
}
ViewGroup.LayoutParams layoutParams = mMybanner.getLayoutParams();
layoutParams.height = BaseUtils.getAutoHeight(3, 2);//轮播图高度
mMybanner.setLayoutParams(layoutParams);
mMybanner.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE);//设置banner样式(显示数字指示器)
mMybanner.setBannerTitles(listbanner);
mMybanner.setImageLoader(new UniverImageLoader());//设置图片加载器
mMybanner.setImages(lists);//设置图片集合
mMybanner.isAutoPlay(false); //设置自动轮播,默认为true
mMybanner.setIndicatorGravity(BannerConfig.RIGHT); //设置指示器位置(当banner模式中有指示器时)
mMybanner.start(); //banner设置方法全部调用完毕时最后调用
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mImmersionBar != null)
mImmersionBar.destroy(); //必须调用该方法,防止内存泄漏,不调用该方法,如果界面bar发生改变,在不关闭app的情况下,退出此界面再进入将记忆最后一次bar改变的状态
}
private void initView() {
mMybanner = (Banner) findViewById(R.id.my__new_banner);
mIvback = (ImageView) findViewById(R.id.iv_new_back);
mIvlove = (ImageView) findViewById(R.id.iv_new_love);
mIvshare = (ImageView) findViewById(R.id.iv_new_share);
mScroller = (ScrollView) findViewById(R.id.shop_new_scrollview);
mTv_car_new_names = (TextView) findViewById(R.id.tv_car_new_names);
mTv_new_configintent = (TextView) findViewById(R.id.tv_new_configintent);
mTv_car_new_prices = (TextView) findViewById(R.id.tv_car_new_prices);
mTv_new_more = (TextView) findViewById(R.id.tv_new_more);
mRelat_visibi = (RelativeLayout) findViewById(R.id.relat_visibi);
mIv_store_image = (ImageView) findViewById(R.id.iv_store_image);
mRel_show_car_config = (RelativeLayout) findViewById(R.id.rel_show_car_new_config);
mLv_car_list_offer = (AutoHeightListView) findViewById(R.id.lv_car_list_new_offer);
mLin_more = (LinearLayout) findViewById(R.id.lin_more);
mRel_more = (RelativeLayout) findViewById(R.id.rel_more);
mIvback.setOnClickListener(this);
mIvlove.setOnClickListener(this);
mIvshare.setOnClickListener(this);
mTv_new_more.setOnClickListener(this);
mRel_show_car_config.setOnClickListener(this);
// if (list1listview.size()> 3){
// mLin_more.setVisibility(View.VISIBLE);
//
// }else {
// mLin_more.setVisibility(View.GONE);
//
// }
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_new_back:
finish();
break;
case R.id.iv_new_love:
Log.e("TAG", "love");
break;
case R.id.iv_new_share:
Log.e("TAG", "分享");
break;
//更多经销商
case R.id.tv_new_more:
if (isShort) {
adapterlv.setDataList(list1listview);
mTv_new_more.setText("收起");
isShort = false;
} else {
adapterlv.setDataList(list1listview.subList(0, 3));
mTv_new_more.setText("更多经销商");
isShort = true;
}
break;
//查看详细参数
case R.id.rel_show_car_new_config:
Intent intent = new Intent(mContext, CarConfigNewActivity.class);
intent.putExtra("ncid", model.getModelId());
startActivity(intent);
break;
}
}
}
这是activity的Xml布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_store_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/icon_default_banner" />
<RelativeLayout
android:id="@+id/relat_visibi"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:visibility="visible">
<ScrollView
android:id="@+id/shop_new_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.youth.banner.Banner
android:id="@+id/my__new_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:banner_default_image="@drawable/icon_default_banner"
app:image_scale_type="fit_xy" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen_20dp">
<ImageView
android:id="@+id/iv_new_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp_20"
android:src="@drawable/shop_back_white" />
<ImageView
android:id="@+id/iv_new_love"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="@dimen/dimen_50dp"
android:padding="@dimen/dp_20"
android:src="@drawable/shop_new_love"
android:visibility="gone" />
<ImageView
android:id="@+id/iv_new_share"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:padding="@dimen/dp_20"
android:src="@drawable/shop_new_share"
android:visibility="gone" />
</RelativeLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
android:padding="@dimen/dimen_5dp">
<TextView
android:id="@+id/tv_car_new_names"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dimen_10dp"
android:layout_marginTop="@dimen/dimen_5dp"
android:ellipsize="end"
android:text="二手车 奥迪A6 2018款"
android:textColor="@color/tc_gray_3"
android:textSize="@dimen/sp_14"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/dimen_10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商家指导价:"
android:textColor="@color/tc_gray_3"
android:textSize="@dimen/sp_13" />
<TextView
android:id="@+id/tv_car_new_prices"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="44.06 "
android:textColor="@color/tc_gray_3"
android:textSize="@dimen/sp_13"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen_10dp"
android:background="@color/white"
android:orientation="vertical"
>
<!--配置参数-->
<RelativeLayout
android:id="@+id/rel_show_car_new_config"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:divider="@color/dividerColor"
android:padding="@dimen/dimen_10dp"
>
<TextView
android:id="@+id/tv_new_configintent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingLeft="@dimen/dp_10"
android:text="查看详细配置参数"
android:textColor="@color/tc_gray_6"
android:textSize="@dimen/sp_15"
android:textStyle="bold" />
<ImageView
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:src="@drawable/shop_more_arrow" />
</RelativeLayout>
<View style="@style/Line.Horizontal" />
<RelativeLayout
android:id="@+id/rel_more"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shop_new_background">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="经销商报价"
android:textColor="@color/app_button" />
</RelativeLayout>
<View style="@style/Line.Horizontal" />
<!--列表-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:divider="@color/dividerColor"
android:orientation="vertical">
<com.dyh.frame.widget.AutoHeightListView
android:id="@+id/lv_car_list_new_offer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:divider="@drawable/listview_divider"
android:dividerHeight="@dimen/dp_0.5" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin_more"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<TextView
android:id="@+id/tv_new_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="@dimen/dimen_10dp"
android:text="更多经销商"
android:textColor="@color/app_button_price"
android:textSize="@dimen/dimen_15sp" />
<View
style="@style/Line.Horizontal"
android:layout_marginBottom="@dimen/dimen_20dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
</RelativeLayout>
这是Adapter布局:
package com.dyh.drivingschool.ui.shopnew.adapter;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.dyh.drivingschool.R;
import com.dyh.drivingschool.ui.shopnew.bean.NewCarDetailsBean;
import com.dyh.drivingschool.utils.MathUtil;
import com.dyh.frame.simple.AbstractAdapter;
import java.util.List;
/**
* Created by ljg on 2018/6/19.
* 新车详情listview适配器
*/
public class CarNewListviewAdapter extends AbstractAdapter<NewCarDetailsBean.StoreEntity> {
public CarNewListviewAdapter(Context mContext, List<NewCarDetailsBean.StoreEntity> dataList) {
super(mContext, dataList);
}
@Override
public int getListViewItemId() {
return R.layout.item_newcar_details_listview;
}
@Override
public long getItemId(int position) {
return position;
}
public void convert(int position, View convertView, final NewCarDetailsBean.StoreEntity dataItem) {
TextView configplant = convertView.findViewById(R.id.tv_new_Title);//标题
TextView mTv_new_price = convertView.findViewById(R.id.tv_new_price);//价格
TextView mTv_new_address = convertView.findViewById(R.id.tv_new_address);//地址
TextView mTv_new_distance = convertView.findViewById(R.id.tv_new_distance);//距离
TextView mTv_new_city = convertView.findViewById(R.id.tv_new_city);//距离
TextView mTv_new_drop = convertView.findViewById(R.id.tv_new_drop);//降价
Button mBt_new_showprice = convertView.findViewById(R.id.bt_new_showprice);//电话
TextView mTv_servicetype = (TextView) convertView.findViewById(R.id.tv_servicetype);//4S店
double t1 = dataItem.getPrice() ;
double t2 = dataItem.getMarketPrice() ;
double t = t2 - t1;
configplant.setText(dataItem.getName());
mTv_new_price.setText(MathUtil.round(dataItem.getPrice(), 2) + dataItem.getCurrencyUnit());
mTv_new_address.setText(dataItem.getAddress());
mTv_new_distance.setText("距离 "+dataItem.getSeeCarAddr());
mTv_new_city.setText(" | "+dataItem.getSale_desp());
mTv_new_drop.setText("直降" + MathUtil.round(t, 2) + dataItem.getCurrencyUnit());
mTv_servicetype.setText(dataItem.getStore_servicetype());
mBt_new_showprice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + dataItem.getTelephone()));
mContext.startActivity(intent);
}
});
}
}
这是listview的item:
<?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">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_new_Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="@dimen/dimen_20dp"
android:layout_marginTop="@dimen/dimen_10dp"
android:text="北京东悦禾科技"
android:textColor="@color/tc_gray_3"
android:textSize="@dimen/dimen_14sp" />
<TextView
android:id="@+id/tv_servicetype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dimen_10dp"
android:layout_marginTop="@dimen/dimen_12dp"
android:textColor="@color/app_button_price"
android:layout_toRightOf="@+id/tv_new_Title"
android:background="@drawable/shape_details_blue"
android:text="4S 店"
android:textSize="@dimen/dimen_12sp"
android:paddingLeft="@dimen/dp_5"
android:paddingRight="@dimen/dp_5"
/>
<TextView
android:id="@+id/tv_new_address"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_new_Title"
android:layout_marginLeft="@dimen/dimen_20dp"
android:layout_marginTop="@dimen/dimen_20dp"
android:text="亦庄经济开发区锋创科技园"
android:maxLength="18"
android:ellipsize="end"
android:textColor="@color/tc_gray_6"
android:textSize="@dimen/dimen_13sp" />
<TextView
android:id="@+id/tv_new_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_new_address"
android:layout_marginLeft="@dimen/dimen_20dp"
android:layout_marginTop="@dimen/dimen_20dp"
android:layout_marginRight="@dimen/dimen_5dp"
android:text="距离1km|"
android:textColor="@color/tc_gray_6"
android:textSize="@dimen/dimen_12sp" />
<TextView
android:id="@+id/tv_new_city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_new_address"
android:layout_marginTop="@dimen/dimen_20dp"
android:layout_toRightOf="@+id/tv_new_distance"
android:text="售本市"
android:textColor="@color/tc_gray_6"
android:textSize="@dimen/dimen_12sp" />
<TextView
android:id="@+id/tv_new_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/tv_new_drop"
android:layout_marginRight="@dimen/dimen_10dp"
android:layout_marginTop="@dimen/dimen_10dp"
android:text="0万"
android:layout_alignParentRight="true"
android:textColor="@color/shop_price"
android:textSize="@dimen/dimen_20sp" />
<TextView
android:id="@+id/tv_new_drop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/tv_new_price"
android:layout_marginRight="@dimen/dimen_10dp"
android:layout_marginTop="@dimen/dimen_10dp"
android:drawableLeft="@drawable/shop_new_drop"
android:drawablePadding="@dimen/dimen_5dp"
android:text="直降0 万"
android:textColor="@color/shop_drop" />
<Button
android:id="@+id/bt_new_showprice"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_34"
android:layout_alignParentEnd="true"
android:layout_below="@+id/tv_new_drop"
android:layout_marginRight="10dp"
android:layout_marginTop="@dimen/dimen_10dp"
android:background="@drawable/shape_button_prices"
android:focusable="false"
android:text="询底价"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
<View
style="@style/Line.Horizontal"
android:layout_marginTop="@dimen/dimen_5dp" />
</LinearLayout>
以上就是我的全部代码,有点多,主要在网络请求的initMore()中,其他的可以不用看。