You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
6.1 KiB

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<GarbageWasteResponse>() {
@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<GarbageWasteResponse>() {
@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<GarbageWastePrice> 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();
}
}