@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="RenderSettings">
|
|
||||||
<option name="showDecorations" value="true" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
@ -0,0 +1,114 @@
|
|||||||
|
package com.example.register;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.FragmentManager;
|
||||||
|
import android.app.FragmentTransaction;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.ListView;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.example.register.R;
|
||||||
|
import com.example.register.entity.Product;
|
||||||
|
import com.example.register.adapter.Adapter;
|
||||||
|
import com.example.register.fragment.SetDetailFragment;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public class CategoryActivity extends Activity {
|
||||||
|
public OnChangeListener onchangedListener;
|
||||||
|
private List<Product> productList;
|
||||||
|
private List<String> productCategory = new ArrayList<>();
|
||||||
|
private ListView titleList;
|
||||||
|
private Adapter adapter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.content_category);
|
||||||
|
initData();
|
||||||
|
init();
|
||||||
|
SetDetailFragment fragment = new SetDetailFragment();
|
||||||
|
FragmentManager fragmentManager = getFragmentManager();
|
||||||
|
FragmentTransaction transaction = fragmentManager.beginTransaction();
|
||||||
|
transaction.replace(R.id.category_detail, fragment);
|
||||||
|
transaction.commit();
|
||||||
|
titleList.setOnItemClickListener((parent, view, position, id) -> {
|
||||||
|
adapter.setSelectedPosition(position);
|
||||||
|
adapter.notifyDataSetInvalidated();
|
||||||
|
if (onchangedListener != null) {
|
||||||
|
onchangedListener.changeText(productList.get(position));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnChangeListener(OnChangeListener onChangeListener) {
|
||||||
|
this.onchangedListener = onChangeListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OnChangeListener {
|
||||||
|
void changeText(Product product);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据
|
||||||
|
*/
|
||||||
|
private void initData() {
|
||||||
|
productList = new ArrayList<>();
|
||||||
|
productCategory.add("热销");
|
||||||
|
productCategory.add("严选");
|
||||||
|
productCategory.add("小食");
|
||||||
|
productCategory.add("啤酒");
|
||||||
|
productCategory.add("饮料");
|
||||||
|
|
||||||
|
|
||||||
|
Product product = new Product();
|
||||||
|
product.setImageUrlId(R.drawable.rou);
|
||||||
|
product.setProductName("肥肉饭");
|
||||||
|
product.setProductPrice(new BigDecimal("19.9"));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Product product1 = new Product();
|
||||||
|
product1.setImageUrlId(R.drawable.haorou);
|
||||||
|
product1.setProductName("严选套餐");
|
||||||
|
product1.setProductPrice(new BigDecimal("29.9"));
|
||||||
|
|
||||||
|
|
||||||
|
Product product2 = new Product();
|
||||||
|
product2.setImageUrlId(R.drawable.xiaoshi);
|
||||||
|
product2.setProductName("小食");
|
||||||
|
product2.setProductPrice(new BigDecimal("9.9"));
|
||||||
|
|
||||||
|
Product product3 = new Product();
|
||||||
|
product3.setImageUrlId(R.drawable.shui);
|
||||||
|
product3.setProductName("矿泉水");
|
||||||
|
product3.setProductPrice(new BigDecimal("1.9"));
|
||||||
|
|
||||||
|
|
||||||
|
Product product4 = new Product();
|
||||||
|
product4.setImageUrlId(R.drawable.yinliao);
|
||||||
|
product4.setProductName("雪碧");
|
||||||
|
product4.setProductPrice(new BigDecimal("1.9"));
|
||||||
|
|
||||||
|
|
||||||
|
productList.add(product);
|
||||||
|
productList.add(product1);
|
||||||
|
productList.add(product2);
|
||||||
|
productList.add(product3);
|
||||||
|
productList.add(product4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化组件
|
||||||
|
*/
|
||||||
|
private void init() {
|
||||||
|
titleList = findViewById(R.id.category_title_list);
|
||||||
|
adapter = new Adapter(productCategory, CategoryActivity.this);
|
||||||
|
titleList.setAdapter(adapter);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.example.register;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Fragment;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class SetDetailFragment extends Fragment {
|
||||||
|
private View view;
|
||||||
|
private ImageView imageView;
|
||||||
|
private TextView nameText, priceText;
|
||||||
|
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
view = inflater.inflate(R.layout.categoty_detail_content, container, false);
|
||||||
|
if (view != null) {
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
CategoryActivity categoryActivity = (CategoryActivity) getActivity();
|
||||||
|
Objects.requireNonNull(categoryActivity).setOnChangeListener(product -> {
|
||||||
|
Log.i("sss", "onCreateView: " + product.getProductName());
|
||||||
|
imageView.setBackgroundResource(product.getImageUrlId());
|
||||||
|
nameText.setText(product.getProductName());
|
||||||
|
priceText.setText(product.getProductPrice().toString());
|
||||||
|
});
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容组件初始化
|
||||||
|
*/
|
||||||
|
private void init() {
|
||||||
|
imageView = view.findViewById(R.id.category_product_image);
|
||||||
|
nameText = view.findViewById(R.id.category_product_name);
|
||||||
|
priceText = view.findViewById(R.id.category_product_price);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.example.register.adapter;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.BaseAdapter;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.example.register.R;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Adapter extends BaseAdapter {
|
||||||
|
private List<String> productCategory;
|
||||||
|
private LayoutInflater layoutInflater;
|
||||||
|
private int selectionPosition = -1;
|
||||||
|
|
||||||
|
public Adapter(List<String> productCategory, Context context) {
|
||||||
|
this.productCategory = productCategory;
|
||||||
|
this.layoutInflater = LayoutInflater.from(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCount() {
|
||||||
|
return productCategory.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getItem(int position) {
|
||||||
|
return productCategory.get(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getItemId(int position) {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getView(int position, View convertView, ViewGroup parent) {
|
||||||
|
ViewHolder viewHolder = null;
|
||||||
|
if (convertView == null) {
|
||||||
|
viewHolder = new ViewHolder();
|
||||||
|
convertView = layoutInflater.inflate(R.layout.category_list_item, null);
|
||||||
|
Log.i("adapts", "getView: " + convertView);
|
||||||
|
viewHolder.tv = convertView.findViewById(R.id.categor_titles);
|
||||||
|
convertView.setTag(viewHolder);
|
||||||
|
} else {
|
||||||
|
viewHolder = (ViewHolder) convertView.getTag();
|
||||||
|
}
|
||||||
|
viewHolder.tv.setText(productCategory.get(position));
|
||||||
|
if (selectionPosition == position) {
|
||||||
|
viewHolder.tv.setBackgroundColor(Color.YELLOW);
|
||||||
|
} else {
|
||||||
|
viewHolder.tv.setBackgroundColor(Color.WHITE);
|
||||||
|
}
|
||||||
|
return convertView;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedPosition(int position) {
|
||||||
|
this.selectionPosition = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ViewHolder {
|
||||||
|
TextView tv;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.example.register.entity;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
public class Product {
|
||||||
|
|
||||||
|
public String getProductName() {
|
||||||
|
return productName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductName(String productName) {
|
||||||
|
this.productName = productName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getProductPrice() {
|
||||||
|
return productPrice;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductPrice(BigDecimal productPrice) {
|
||||||
|
this.productPrice = productPrice;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getImageUrlId() {
|
||||||
|
return imageUrlId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImageUrlId(Integer imageUrlId) {
|
||||||
|
this.imageUrlId = imageUrlId;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Integer imageUrlId;
|
||||||
|
private String productName;
|
||||||
|
private BigDecimal productPrice;
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package com.example.register.fragment;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Fragment;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.example.register.R;
|
||||||
|
import com.example.register.CategoryActivity;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class SetDetailFragment extends Fragment {
|
||||||
|
private View view;
|
||||||
|
private ImageView imageView;
|
||||||
|
private TextView nameText, priceText;
|
||||||
|
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
view = inflater.inflate(R.layout.categoty_detail_content, container, false);
|
||||||
|
if (view != null) {
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
CategoryActivity categoryActivity = (CategoryActivity) getActivity();
|
||||||
|
Objects.requireNonNull(categoryActivity).setOnChangeListener(product -> {
|
||||||
|
Log.i("sss", "onCreateView: " + product.getProductName());
|
||||||
|
imageView.setBackgroundResource(product.getImageUrlId());
|
||||||
|
nameText.setText(product.getProductName());
|
||||||
|
priceText.setText(product.getProductPrice().toString());
|
||||||
|
});
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容组件初始化
|
||||||
|
*/
|
||||||
|
private void init() {
|
||||||
|
imageView = view.findViewById(R.id.category_product_image);
|
||||||
|
nameText = view.findViewById(R.id.category_product_name);
|
||||||
|
priceText = view.findViewById(R.id.category_product_price);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 297 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 293 KiB |
After Width: | Height: | Size: 258 KiB |
@ -0,0 +1,16 @@
|
|||||||
|
<?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">
|
||||||
|
|
||||||
|
<GridView
|
||||||
|
android:id="@+id/category_detail_list"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:numColumns="3"
|
||||||
|
android:verticalSpacing="10dp"
|
||||||
|
android:horizontalSpacing="10dp"
|
||||||
|
android:gravity="center"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -0,0 +1,14 @@
|
|||||||
|
<?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">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/categor_titles"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:gravity="center"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:text="标题" />
|
||||||
|
</LinearLayout>
|
@ -0,0 +1,31 @@
|
|||||||
|
<?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/category_product_image"
|
||||||
|
android:layout_width="90dp"
|
||||||
|
android:layout_height="90dp"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/category_product_name"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:textColor="#050505"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/category_product_price"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="#050505"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
@ -0,0 +1,54 @@
|
|||||||
|
<?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:background="#E8E8E8"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<!--标题-->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="#EFB81C"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/category_return"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:src="@drawable/arrow_left" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="商品种类"
|
||||||
|
android:textColor="#FFF"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!--分类标题和内容-->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
<!--标题-->
|
||||||
|
<!--内容-->
|
||||||
|
|
||||||
|
<ListView
|
||||||
|
android:id="@+id/category_title_list"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/category_detail"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="3" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|