package com.community.pocket.ui.main.ui.garbage.waste; import android.os.Bundle; import android.text.Editable; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.widget.AutoCompleteTextView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.gridlayout.widget.GridLayout; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.community.pocket.R; import com.community.pocket.data.adapter.GarbageWasteAdpter; import com.community.pocket.data.model.GarbageWaste; import com.community.pocket.data.model.GarbageWasteManage; import com.community.pocket.data.model.GarbageWastePrice; import com.community.pocket.ui.BaseFragment; import com.community.pocket.ui.listener.MyTextChange; import com.community.pocket.ui.main.ui.share.MyAutoCompleteTextView; import com.community.pocket.ui.main.ui.share.Response; import org.xutils.view.annotation.ContentView; import org.xutils.view.annotation.ViewInject; import java.util.List; @ContentView(R.layout.garbage_waste) public class GarbageWasteFragment extends BaseFragment { //联系管理员 @ViewInject(R.id.name) private TextView name; //联系电话 @ViewInject(R.id.mobie) private TextView mobie; //检索废品 @ViewInject(R.id.search_price) private AutoCompleteTextView searchPrice; @ViewInject(R.id.waste_layout) private GridLayout layout; private MyAutoCompleteTextView myAutoCompleteTextView; private GarbageWasteAdpter garbageWasteAdpter; @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); final GarbageWasteViewModel viewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(GarbageWasteViewModel.class); myAutoCompleteTextView = new MyAutoCompleteTextView(searchPrice, viewModel); viewModel.searchDefault(); //监听默认废品信息请求状态 viewModel.getDefaultList().observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(GarbageWasteResponse garbageWasteResponse) { if (garbageWasteResponse == null) { return; } if (garbageWasteResponse.getSuccess() != null) { initDefault(garbageWasteResponse.getBody()); } if (garbageWasteResponse.getError() != null) { garbageWasteResponse.fail(getContext()); } } }); //监听废品信息请求状态 viewModel.getSearchList().observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(GarbageWasteResponse garbageWasteResponse) { if (garbageWasteResponse == null) { return; } if (garbageWasteResponse.getResult() == Response.Result.OK) { initSearch(garbageWasteResponse.getBody()); } else { garbageWasteResponse.fail(getContext()); } } }); //检索内容改变触发监听器 searchPrice.addTextChangedListener(new MyTextChange() { @Override public void afterTextChanged(Editable s) { if (garbageWasteAdpter != null && garbageWasteAdpter.containsKey(s.toString())) { layout.removeAllViews(); addHead(); addItem(garbageWasteAdpter.get(s.toString())); return; } if (s.length() == 0) { viewModel.searchDefault(); } else { myAutoCompleteTextView.searchHandler(); } } }); } /** * 检索默认废品信息 * * @param waste 废品信息 */ private void initDefault(GarbageWaste waste) { GarbageWasteManage manage = waste.getGarbageWasteManage(); name.setText(getString(R.string.garbage_waste_name, manage.getName())); mobie.setText(getString(R.string.garbage_waste_mobie, manage.getMobie())); layout.removeAllViews(); addHead(); List priceList = waste.getDefaultList(); for (GarbageWastePrice price : priceList) { addItem(price); } } private void addHead() { createTextView(getString(R.string.garbage_table_name)); createTextView(getString(R.string.garbage_table_price)); } /** * 添加一行数据 * * @param price 废品信息 */ private void addItem(GarbageWastePrice price) { createTextView(price.getName()); createTextView(String.valueOf(price.getPrice())); } /** * 创建单元格 */ private void createTextView(CharSequence text) { TextView textView = new TextView(getContext()); textView.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); textView.setText(text); textView.setBackground(getResources().getDrawable(R.drawable.border)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 24); GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams(); layoutParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f); textView.setLayoutParams(layoutParams); layout.addView(textView); } /** * 检索废品回收信息 * * @param waste 废品信息 */ private void initSearch(GarbageWaste waste) { // 设置适配器 if (garbageWasteAdpter == null) { garbageWasteAdpter = new GarbageWasteAdpter(waste.getSearchList(), getContext()); // 将适配器与当前AutoCompleteTextView控件绑定 searchPrice.setAdapter(garbageWasteAdpter); } else { garbageWasteAdpter.addAll(waste.getSearchList()); } myAutoCompleteTextView.refreshDropList(); } }