//main布局 |
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
xmlns:tools= "http://schemas.android.com/tools" |
android:id= "@+id/activity_main" |
android:layout_width= "match_parent" |
android:layout_height= "match_parent" |
android:orientation= "vertical" |
> |
<LinearLayout |
android:layout_width= "match_parent" |
android:layout_height= "wrap_content" > |
<Button |
android:layout_width= "0dp" |
android:layout_weight= "1" |
android:text= "全选" |
android:onClick= "checkAll" |
android:layout_height= "wrap_content" /> |
<Button |
android:layout_width= "0dp" |
android:layout_weight= "1" |
android:text= "反选" |
android:onClick= "checkNone" |
android:layout_height= "wrap_content" /> |
</LinearLayout> |
<ListView |
android:id= "@+id/listView" |
android:layout_weight= "1" |
android:layout_height= "0dp" |
android:layout_width= "match_parent" |
/> |
<TextView |
android:layout_width= "wrap_content" |
android:id= "@+id/tv_sum" |
android:text= "总价格" |
android:layout_height= "wrap_content" /> |
</LinearLayout> |
//条目布局 |
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
android:layout_width= "match_parent" |
android:layout_height= "match_parent" |
android:orientation= "horizontal" > |
<TextView |
android:id= "@+id/tv_title" |
android:layout_width= "0dp" |
android:layout_height= "wrap_content" |
android:layout_weight= "1" /> |
<TextView |
android:id= "@+id/tv_price" |
android:layout_width= "0dp" |
android:layout_height= "wrap_content" |
android:layout_weight= "1" /> |
<TextView |
android:id= "@+id/tv_count" |
android:layout_width= "0dp" |
android:layout_height= "wrap_content" |
android:layout_weight= "1" /> |
<CheckBox |
android:id= "@+id/checkbox" |
android:layout_width= "0dp" |
android:layout_height= "wrap_content" |
android:layout_weight= "1" /> |
</LinearLayout> |
//bean包 |
public class Product { |
private String title; |
private int price; |
private int count; |
private boolean isChecked; |
public Product(String title, int price, int count) { |
this .title = title; |
this .price = price; |
this .count = count; |
} |
public Product() { |
} |
public String getTitle() { |
return title; |
} |
public void setTitle(String title) { |
this .title = title; |
} |
public int getPrice() { |
return price; |
} |
public void setPrice( int price) { |
this .price = price; |
} |
public int getCount() { |
return count; |
} |
public void setCount( int count) { |
this .count = count; |
} |
public boolean isChecked() { |
return isChecked; |
} |
public void setChecked( boolean checked) { |
isChecked = checked; |
} |
} |
public class MainActivity extends AppCompatActivity implements AbsListView.OnScrollListener { |
private ArrayList<Product> productList = new ArrayList<>();; |
private ProductAdapter productAdapter; |
private TextView tv_sum; |
//滑动到底部的时候,添加30条 |
private int currentIndex= 0 ; |
private int each_count= 30 ; |
@Override |
protected void onCreate(Bundle savedInstanceState) { |
super .onCreate(savedInstanceState); |
setContentView(R.layout.activity_main); |
ListView listView = (ListView) findViewById(R.id.listView); |
tv_sum = (TextView) findViewById(R.id.tv_sum); |
//初始化数据 |
initData(); |
//设置数据适配器 |
productAdapter = new ProductAdapter( this , productList); |
listView.setAdapter(productAdapter); |
//设置滑动的监听 |
listView.setOnScrollListener( this ); |
} |
private void initData() { |
for ( int i = currentIndex; i < currentIndex+each_count; i++) { |
productList.add( new Product( "商品" + i, 10 + i, i)); |
} |
} |
/** |
* 全选按钮 |
* @param view |
*/ |
public void checkAll(View view) { |
//只需要对象 |
for ( int i = 0 ; i < productList.size(); i++) { |
//全选 |
productList.get(i).setChecked( true ); |
} |
//刷新 |
productAdapter.notifyDataSetChanged(); |
setPrice(); |
} |
/** |
* 反选 |
* @param view |
*/ |
public void checkNone(View view) { |
//只需要对象 |
for ( int i = 0 ; i < productList.size(); i++) { |
//全选 |
// productList.get(i).setChecked(false); |
productList.get(i).setChecked(!productList.get(i).isChecked()); |
} |
//刷新 |
productAdapter.notifyDataSetChanged(); |
setPrice(); |
} |
/** |
* 修改价格 |
*/ |
public void setPrice() { |
int price = 0 ; |
//只需要对象 |
for ( int i = 0 ; i < productList.size(); i++) { |
//全选 |
// productList.get(i).setChecked(false); |
boolean checked = productList.get(i).isChecked(); |
if (checked) { |
price = price + productList.get(i).getPrice() * productList.get(i).getCount(); |
} |
} |
tv_sum.setText( "总价格:" +price); |
} |
/** |
* 滑动状态改变 |
* @param absListView |
* @param |
*/ |
@Override |
public void onScrollStateChanged(AbsListView absListView, int state) { |
//静止状态 |
if (state== AbsListView.OnScrollListener.SCROLL_STATE_IDLE){ |
//并且当前可以看到的条目的最后一个是集合的最后一个 |
int lastVisiblePosition = absListView.getLastVisiblePosition(); |
if (lastVisiblePosition==productList.size()- 1 ){ |
//加载数据 |
currentIndex=currentIndex+each_count; |
//加载数据 |
initData(); |
//刷新适配器 |
productAdapter.notifyDataSetChanged(); |
} |
} |
} |
/** |
* 滑动的过程 |
* @param absListView |
* @param i |
* @param i1 |
* @param i2 |
*/ |
@Override |
public void onScroll(AbsListView absListView, int i, int i1, int i2) { |
} |
} |
@Override |
public View getView( final int i, View convertView, ViewGroup viewGroup) { |
//代码优化 |
final ViewHolder viewHolder; |
if (convertView == null ) { |
viewHolder = new ViewHolder(); |
convertView = View.inflate(context, R.layout.lv_item, null ); |
//找控件 |
viewHolder.tv_count = (TextView) convertView.findViewById(R.id.tv_count); |
viewHolder.tv_price = (TextView) convertView.findViewById(R.id.tv_price); |
viewHolder.tv_title = (TextView) convertView.findViewById(R.id.tv_title); |
viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox); |
//设置标记 |
convertView.setTag(viewHolder); |
} else { |
viewHolder = (ViewHolder) convertView.getTag(); |
} |
viewHolder.tv_title.setText(productList.get(i).getTitle()); |
viewHolder.tv_count.setText(productList.get(i).getCount() + "" ); //ResouceNotfoundException |
viewHolder.tv_price.setText(productList.get(i).getPrice() + "" ); |
// viewHolder.checkBox.setOnCheckedChangeListener(); |
viewHolder.checkBox.setOnClickListener( new View.OnClickListener() { |
@Override |
public void onClick(View view) { |
//判断一下当前是否选中 |
boolean checked = viewHolder.checkBox.isChecked(); |
productList.get(i).setChecked(checked); |
//重新设置价格 |
MainActivity mainActivity = (MainActivity) context; |
mainActivity.setPrice(); |
} |
}); |
//设置是否选中 |
viewHolder.checkBox.setChecked(productList.get(i).isChecked()); |
return convertView; |
} |
by: 发表于:2017-10-25 10:46:31 顶(0) | 踩(0) 回复
??
回复评论