parent
4b0b118828
commit
f836df523b
@ -0,0 +1,49 @@ |
|||||||
|
package com.community.pocket.data.adapter; |
||||||
|
|
||||||
|
import android.content.Context; |
||||||
|
import android.widget.ArrayAdapter; |
||||||
|
|
||||||
|
import com.community.pocket.data.model.GarbageWastePrice; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* 废品回收数据适配器 |
||||||
|
*/ |
||||||
|
public class GarbageWasteAdpter extends ArrayAdapter<String> { |
||||||
|
private List<GarbageWastePrice> dataList; |
||||||
|
|
||||||
|
private List<String> list = new ArrayList<>(); |
||||||
|
|
||||||
|
private Map<String, GarbageWastePrice> map = new HashMap<>(); |
||||||
|
|
||||||
|
public GarbageWasteAdpter(List<GarbageWastePrice> dataList, Context context) { |
||||||
|
super(context, android.R.layout.simple_list_item_1); |
||||||
|
addAll(dataList); |
||||||
|
} |
||||||
|
|
||||||
|
public void addAll(List<GarbageWastePrice> dataList) { |
||||||
|
this.dataList = dataList; |
||||||
|
this.list.clear(); |
||||||
|
this.map.clear(); |
||||||
|
|
||||||
|
for (GarbageWastePrice price : dataList) { |
||||||
|
this.list.add(price.getName()); |
||||||
|
this.map.put(price.getName(), price); |
||||||
|
} |
||||||
|
|
||||||
|
clear(); |
||||||
|
addAll(this.list); |
||||||
|
} |
||||||
|
|
||||||
|
public GarbageWastePrice get(String name) { |
||||||
|
return this.map.get(name); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean containsKey(String name) { |
||||||
|
return this.list.contains(name); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,72 @@ |
|||||||
|
package com.community.pocket.data.main.garbage; |
||||||
|
|
||||||
|
import com.community.pocket.R; |
||||||
|
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.main.ui.garbage.waste.GarbageWasteResponse; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Random; |
||||||
|
|
||||||
|
/** |
||||||
|
* 废品回收接口 |
||||||
|
* TODO 完善逻辑 |
||||||
|
*/ |
||||||
|
public class GarbageWasteRequest { |
||||||
|
private static volatile GarbageWasteRequest instance; |
||||||
|
|
||||||
|
private GarbageWasteRequest() { |
||||||
|
} |
||||||
|
|
||||||
|
public static GarbageWasteRequest getInstance() { |
||||||
|
if (instance == null) { |
||||||
|
instance = new GarbageWasteRequest(); |
||||||
|
} |
||||||
|
return instance; |
||||||
|
} |
||||||
|
|
||||||
|
//检索默认废品信息
|
||||||
|
public GarbageWasteResponse searchDefault() { |
||||||
|
GarbageWasteManage manage = new GarbageWasteManage(); |
||||||
|
manage.setMobie("10086"); |
||||||
|
manage.setName("Test"); |
||||||
|
|
||||||
|
List<GarbageWastePrice> priceList = new ArrayList<>(); |
||||||
|
for (int i = 0; i < 30; i++) { |
||||||
|
GarbageWastePrice price = new GarbageWastePrice(); |
||||||
|
price.setName("waste" + i); |
||||||
|
price.setPrice(new Random().nextInt(10) * 1F); |
||||||
|
priceList.add(price); |
||||||
|
} |
||||||
|
|
||||||
|
GarbageWaste waste = new GarbageWaste(); |
||||||
|
waste.setDefaultList(priceList); |
||||||
|
waste.setGarbageWasteManage(manage); |
||||||
|
|
||||||
|
GarbageWasteResponse response = new GarbageWasteResponse(); |
||||||
|
response.setSuccess(R.string.garbage_waste_search_ok); |
||||||
|
response.setBody(waste); |
||||||
|
return response; |
||||||
|
} |
||||||
|
|
||||||
|
//检索废品
|
||||||
|
public GarbageWasteResponse search(String name) { |
||||||
|
List<GarbageWastePrice> priceList = new ArrayList<>(); |
||||||
|
for (int i = 0; i < 5; i++) { |
||||||
|
GarbageWastePrice price = new GarbageWastePrice(); |
||||||
|
price.setName("waste" + i); |
||||||
|
price.setPrice(new Random().nextInt(10) * 1F); |
||||||
|
priceList.add(price); |
||||||
|
} |
||||||
|
|
||||||
|
GarbageWaste waste = new GarbageWaste(); |
||||||
|
waste.setSearchList(priceList); |
||||||
|
GarbageWasteResponse response = new GarbageWasteResponse(); |
||||||
|
response.setSuccess(R.string.garbage_waste_search_ok); |
||||||
|
response.setBody(waste); |
||||||
|
return response; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
package com.community.pocket.data.model; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
//废品回收信息
|
||||||
|
public class GarbageWaste { |
||||||
|
|
||||||
|
//默认价格信息
|
||||||
|
private List<GarbageWastePrice> defaultList; |
||||||
|
|
||||||
|
//检索价格信息
|
||||||
|
private List<GarbageWastePrice> searchList; |
||||||
|
|
||||||
|
//管理员信息
|
||||||
|
private GarbageWasteManage garbageWasteManage; |
||||||
|
|
||||||
|
public List<GarbageWastePrice> getDefaultList() { |
||||||
|
return defaultList; |
||||||
|
} |
||||||
|
|
||||||
|
public void setDefaultList(List<GarbageWastePrice> defaultList) { |
||||||
|
this.defaultList = defaultList; |
||||||
|
} |
||||||
|
|
||||||
|
public List<GarbageWastePrice> getSearchList() { |
||||||
|
return searchList; |
||||||
|
} |
||||||
|
|
||||||
|
public void setSearchList(List<GarbageWastePrice> searchList) { |
||||||
|
this.searchList = searchList; |
||||||
|
} |
||||||
|
|
||||||
|
public GarbageWasteManage getGarbageWasteManage() { |
||||||
|
return garbageWasteManage; |
||||||
|
} |
||||||
|
|
||||||
|
public void setGarbageWasteManage(GarbageWasteManage garbageWasteManage) { |
||||||
|
this.garbageWasteManage = garbageWasteManage; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package com.community.pocket.data.model; |
||||||
|
|
||||||
|
//废品管理员信息
|
||||||
|
public class GarbageWasteManage { |
||||||
|
//管理员名
|
||||||
|
private String name; |
||||||
|
//联系电话
|
||||||
|
private String mobie; |
||||||
|
|
||||||
|
public String getName() { |
||||||
|
return name; |
||||||
|
} |
||||||
|
|
||||||
|
public void setName(String name) { |
||||||
|
this.name = name; |
||||||
|
} |
||||||
|
|
||||||
|
public String getMobie() { |
||||||
|
return mobie; |
||||||
|
} |
||||||
|
|
||||||
|
public void setMobie(String mobie) { |
||||||
|
this.mobie = mobie; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package com.community.pocket.data.model; |
||||||
|
|
||||||
|
//废品信息
|
||||||
|
public class GarbageWastePrice { |
||||||
|
//废品名
|
||||||
|
private String name; |
||||||
|
//废品价格
|
||||||
|
private Float price; |
||||||
|
|
||||||
|
public String getName() { |
||||||
|
return name; |
||||||
|
} |
||||||
|
|
||||||
|
public void setName(String name) { |
||||||
|
this.name = name; |
||||||
|
} |
||||||
|
|
||||||
|
public Float getPrice() { |
||||||
|
return price; |
||||||
|
} |
||||||
|
|
||||||
|
public void setPrice(Float price) { |
||||||
|
this.price = price; |
||||||
|
} |
||||||
|
} |
@ -1,44 +0,0 @@ |
|||||||
package com.community.pocket.ui.main; |
|
||||||
|
|
||||||
import android.os.Bundle; |
|
||||||
import android.view.LayoutInflater; |
|
||||||
import android.view.View; |
|
||||||
import android.view.ViewGroup; |
|
||||||
import android.widget.TextView; |
|
||||||
|
|
||||||
import androidx.annotation.NonNull; |
|
||||||
import androidx.annotation.Nullable; |
|
||||||
import androidx.lifecycle.MutableLiveData; |
|
||||||
import androidx.lifecycle.Observer; |
|
||||||
|
|
||||||
import com.community.pocket.ui.BaseFragment; |
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull; |
|
||||||
|
|
||||||
/** |
|
||||||
* 主界面框架 |
|
||||||
*/ |
|
||||||
//TODO 测试类
|
|
||||||
public abstract class TestMainFragment extends BaseFragment { |
|
||||||
|
|
||||||
@NotNull |
|
||||||
@Override |
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { |
|
||||||
|
|
||||||
//文本框打印测试信息
|
|
||||||
View root = super.onCreateView(inflater, container, savedInstanceState); |
|
||||||
final TextView textView = root.findViewById(viewId()); |
|
||||||
MutableLiveData<String> mText = new MutableLiveData<>(); |
|
||||||
mText.setValue("未完成界面!!!"); |
|
||||||
mText.observe(getViewLifecycleOwner(), new Observer<String>() { |
|
||||||
@Override |
|
||||||
public void onChanged(@Nullable String s) { |
|
||||||
textView.setText(s); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
return root; |
|
||||||
} |
|
||||||
|
|
||||||
protected abstract int viewId(); |
|
||||||
} |
|
@ -1,19 +0,0 @@ |
|||||||
package com.community.pocket.ui.main.ui.garbage; |
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData; |
|
||||||
import androidx.lifecycle.MutableLiveData; |
|
||||||
import androidx.lifecycle.ViewModel; |
|
||||||
|
|
||||||
public class GarbageViewModel extends ViewModel { |
|
||||||
|
|
||||||
private MutableLiveData<String> mText; |
|
||||||
|
|
||||||
public GarbageViewModel() { |
|
||||||
mText = new MutableLiveData<>(); |
|
||||||
mText.setValue("This is notifications fragment"); |
|
||||||
} |
|
||||||
|
|
||||||
LiveData<String> getText() { |
|
||||||
return mText; |
|
||||||
} |
|
||||||
} |
|
@ -1,10 +0,0 @@ |
|||||||
package com.community.pocket.ui.main.ui.garbage; |
|
||||||
|
|
||||||
import com.community.pocket.R; |
|
||||||
import com.community.pocket.ui.BaseFragment; |
|
||||||
|
|
||||||
import org.xutils.view.annotation.ContentView; |
|
||||||
|
|
||||||
@ContentView(R.layout.garbage_waste) |
|
||||||
public class GarbageWasteFragment extends BaseFragment { |
|
||||||
} |
|
@ -1,4 +1,4 @@ |
|||||||
package com.community.pocket.ui.main.ui.garbage; |
package com.community.pocket.ui.main.ui.garbage.sorting; |
||||||
|
|
||||||
import com.community.pocket.data.model.GarbageSorting; |
import com.community.pocket.data.model.GarbageSorting; |
||||||
import com.community.pocket.ui.main.ui.share.Response; |
import com.community.pocket.ui.main.ui.share.Response; |
@ -1,4 +1,4 @@ |
|||||||
package com.community.pocket.ui.main.ui.garbage; |
package com.community.pocket.ui.main.ui.garbage.sorting; |
||||||
|
|
||||||
import androidx.lifecycle.MutableLiveData; |
import androidx.lifecycle.MutableLiveData; |
||||||
|
|
@ -0,0 +1,182 @@ |
|||||||
|
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 android.widget.Toast; |
||||||
|
|
||||||
|
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 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) { |
||||||
|
Toast.makeText(getContext(), garbageWasteResponse.fail(getContext()), Toast.LENGTH_SHORT).show(); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
//监听废品信息请求状态
|
||||||
|
viewModel.getSearchList().observe(getViewLifecycleOwner(), new Observer<GarbageWasteResponse>() { |
||||||
|
@Override |
||||||
|
public void onChanged(GarbageWasteResponse garbageWasteResponse) { |
||||||
|
if (garbageWasteResponse == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (garbageWasteResponse.getSuccess() != null) { |
||||||
|
initSearch(garbageWasteResponse.getBody()); |
||||||
|
} |
||||||
|
|
||||||
|
if (garbageWasteResponse.getError() != null) { |
||||||
|
Toast.makeText(getContext(), garbageWasteResponse.fail(getContext()), Toast.LENGTH_SHORT).show(); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
//检索内容改变触发监听器
|
||||||
|
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())); |
||||||
|
} |
||||||
|
|
||||||
|
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(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
package com.community.pocket.ui.main.ui.garbage.waste; |
||||||
|
|
||||||
|
import com.community.pocket.data.model.GarbageWaste; |
||||||
|
import com.community.pocket.ui.main.ui.share.Response; |
||||||
|
|
||||||
|
public class GarbageWasteResponse extends Response<GarbageWaste> { |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
package com.community.pocket.ui.main.ui.garbage.waste; |
||||||
|
|
||||||
|
import androidx.lifecycle.MutableLiveData; |
||||||
|
|
||||||
|
import com.community.pocket.data.main.garbage.GarbageWasteRequest; |
||||||
|
import com.community.pocket.ui.main.ui.share.BaseViewModel; |
||||||
|
import com.community.pocket.ui.main.ui.share.SearchViewModel; |
||||||
|
|
||||||
|
//废品信息UI管理
|
||||||
|
public class GarbageWasteViewModel extends BaseViewModel<GarbageWasteRequest> implements SearchViewModel { |
||||||
|
|
||||||
|
//检索默认废品信息
|
||||||
|
private MutableLiveData<GarbageWasteResponse> defaultList = new MutableLiveData<>(); |
||||||
|
//检索废品信息
|
||||||
|
private MutableLiveData<GarbageWasteResponse> searchList = new MutableLiveData<>(); |
||||||
|
|
||||||
|
MutableLiveData<GarbageWasteResponse> getDefaultList() { |
||||||
|
return defaultList; |
||||||
|
} |
||||||
|
|
||||||
|
MutableLiveData<GarbageWasteResponse> getSearchList() { |
||||||
|
return searchList; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected GarbageWasteRequest getRequest() { |
||||||
|
return GarbageWasteRequest.getInstance(); |
||||||
|
} |
||||||
|
|
||||||
|
//检索默认废品请求状态
|
||||||
|
void searchDefault() { |
||||||
|
GarbageWasteResponse response = getRequest().searchDefault(); |
||||||
|
defaultList.setValue(response); |
||||||
|
} |
||||||
|
|
||||||
|
//检索废品请求状态
|
||||||
|
@Override |
||||||
|
public void search(String content) { |
||||||
|
GarbageWasteResponse response = getRequest().search(content); |
||||||
|
searchList.setValue(response); |
||||||
|
} |
||||||
|
} |
@ -1,4 +1,63 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||||
android:layout_width="match_parent" |
android:layout_width="match_parent" |
||||||
android:layout_height="match_parent" /> |
android:layout_height="match_parent" |
||||||
|
tools:context=".ui.main.ui.garbage.waste.GarbageWasteFragment"> |
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="match_parent"> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:id="@+id/name" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:gravity="center" |
||||||
|
android:textSize="24sp" |
||||||
|
app:layout_constraintStart_toStartOf="parent" |
||||||
|
app:layout_constraintTop_toTopOf="parent" /> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:id="@+id/mobie" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginTop="8dp" |
||||||
|
android:gravity="center" |
||||||
|
android:textSize="24sp" |
||||||
|
app:layout_constraintStart_toStartOf="parent" |
||||||
|
app:layout_constraintTop_toBottomOf="@id/name" /> |
||||||
|
|
||||||
|
<AutoCompleteTextView |
||||||
|
android:id="@+id/search_price" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginTop="8dp" |
||||||
|
android:completionThreshold="1" |
||||||
|
android:hint="@string/garbage_waste_search" |
||||||
|
app:layout_constraintStart_toStartOf="parent" |
||||||
|
app:layout_constraintTop_toBottomOf="@id/mobie" /> |
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="0dp" |
||||||
|
android:fillViewport="true" |
||||||
|
app:layout_constraintBottom_toBottomOf="parent" |
||||||
|
app:layout_constraintStart_toStartOf="parent" |
||||||
|
app:layout_constraintTop_toBottomOf="@id/search_price"> |
||||||
|
|
||||||
|
<LinearLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:orientation="vertical"> |
||||||
|
|
||||||
|
<androidx.gridlayout.widget.GridLayout |
||||||
|
android:id="@+id/waste_layout" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="match_parent" |
||||||
|
app:columnCount="2" /> |
||||||
|
</LinearLayout> |
||||||
|
</androidx.core.widget.NestedScrollView> |
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout> |
||||||
|
</FrameLayout> |
@ -0,0 +1,24 @@ |
|||||||
|
<?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="horizontal"> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:id="@+id/name" |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:background="@drawable/border" |
||||||
|
android:gravity="center" |
||||||
|
android:textSize="24sp" /> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:id="@+id/price" |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:background="@drawable/border" |
||||||
|
android:gravity="center" |
||||||
|
android:textSize="24sp" /> |
||||||
|
</LinearLayout> |
Loading…
Reference in new issue