diff --git a/doc/智取无人物流系统设计规格说明书.doc b/doc/智取无人物流系统设计规格说明书.doc new file mode 100644 index 0000000..8d36701 Binary files /dev/null and b/doc/智取无人物流系统设计规格说明书.doc differ diff --git a/doc/智取无人物流系统需求规格说明书.docx b/doc/智取无人物流系统需求规格说明书.docx index 033afc5..1731b11 100644 Binary files a/doc/智取无人物流系统需求规格说明书.docx and b/doc/智取无人物流系统需求规格说明书.docx differ diff --git a/src/Logistics.zip b/src/Logistics.zip new file mode 100644 index 0000000..ec270cf Binary files /dev/null and b/src/Logistics.zip differ diff --git a/src/Logistics/.idea/misc.xml b/src/Logistics/.idea/misc.xml index 6b89b6d..776ae1d 100644 --- a/src/Logistics/.idea/misc.xml +++ b/src/Logistics/.idea/misc.xml @@ -16,15 +16,18 @@ + + + - + diff --git a/src/Logistics/app/release/app-release.apk b/src/Logistics/app/release/app-release.apk new file mode 100644 index 0000000..49b535f Binary files /dev/null and b/src/Logistics/app/release/app-release.apk differ diff --git a/src/Logistics/app/release/app-release.zip b/src/Logistics/app/release/app-release.zip new file mode 100644 index 0000000..090e0fa Binary files /dev/null and b/src/Logistics/app/release/app-release.zip differ diff --git a/src/Logistics/app/release/output-metadata.json b/src/Logistics/app/release/output-metadata.json new file mode 100644 index 0000000..e940981 --- /dev/null +++ b/src/Logistics/app/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.example.logistics", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "1.0", + "outputFile": "app-release.apk" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/src/Logistics/app/src/main/AndroidManifest.xml b/src/Logistics/app/src/main/AndroidManifest.xml index b536cf6..ee67598 100644 --- a/src/Logistics/app/src/main/AndroidManifest.xml +++ b/src/Logistics/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + xmlns:tools="http://schemas.android.com/tools" + package="com.example.logistics"> @@ -11,13 +11,19 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.Logistics" > + android:theme="@style/Theme.Logistics"> + + + android:exported="true"> diff --git a/src/Logistics/app/src/main/java/com/example/logistics/dao/goodDao.java b/src/Logistics/app/src/main/java/com/example/logistics/dao/goodDao.java index 2fc2ece..ffde8d0 100644 --- a/src/Logistics/app/src/main/java/com/example/logistics/dao/goodDao.java +++ b/src/Logistics/app/src/main/java/com/example/logistics/dao/goodDao.java @@ -13,7 +13,10 @@ import com.example.logistics.ui.MenuActivity; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; public class goodDao { @@ -24,6 +27,7 @@ public class goodDao { Connection connection = DBOpenHelper.getConn(); + int msg = 0; try{ String sql = "select * from goods where id = ?"; @@ -83,4 +87,83 @@ public class goodDao { } return msg; } + + public boolean delete(String pickupcode){ + + Connection connection = DBOpenHelper.getConn(); + try{ + String sql = "delete from goods where id = ?"; + + if(connection != null){ + PreparedStatement ps = connection.prepareStatement(sql); + if(ps != null){ + Log.e(TAG, "pickupcode: " + pickupcode); + ps.setString(1,pickupcode); + + ps.executeUpdate(); + + connection.close(); + ps.close(); + return true; + }else{ + Log.e(TAG, "ps is null"); + return false; + } + }else{ + Log.e(TAG, "connection is null"); + return false; + } + }catch(Exception e){ + e.printStackTrace(); + Log.d(TAG, "delete bug" + e.getMessage()); + } + return false; + } + + public List> nopick(String phonenum){ + + Connection connection = DBOpenHelper.getConn(); + + List> datalist; + datalist = new ArrayList>(); + try{ + String sql = "select * from goods where phonenum = ?"; + + if(connection != null){ + PreparedStatement ps = connection.prepareStatement(sql); + if(ps != null){ + Log.e(TAG, "phonenum: " + phonenum); + ps.setString(1,phonenum); + ResultSet rs = ps.executeQuery(); + + int count = rs.getMetaData().getColumnCount(); + while(rs.next()){ + Map map = new HashMap(); + for(int i = 1; i <= count; i++){ + String field = rs.getMetaData().getColumnName(i); + if(field.equals("id")){ + map.put(field, rs.getString(field)); + } + if(field.equals("time")) { + map.put(field, rs.getString(field)); + } + } + datalist.add(map); + } + connection.close(); + ps.close(); + }else{ + Log.e(TAG, "ps is null"); + } + }else{ + Log.e(TAG, "connection is null"); + } + }catch (Exception e){ + e.printStackTrace(); + Log.d(TAG, "search bug: " + e.getMessage()); + } + return datalist; + } + + } diff --git a/src/Logistics/app/src/main/java/com/example/logistics/dao/operationDao.java b/src/Logistics/app/src/main/java/com/example/logistics/dao/operationDao.java index ef55077..e6800ee 100644 --- a/src/Logistics/app/src/main/java/com/example/logistics/dao/operationDao.java +++ b/src/Logistics/app/src/main/java/com/example/logistics/dao/operationDao.java @@ -8,9 +8,13 @@ import com.example.logistics.tools.MD5Utils; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.List; +import java.util.Map; public class operationDao { private static final String TAG = "operationDao"; @@ -54,4 +58,49 @@ public class operationDao { return false; } } + + public List> history(String phonenum){ + + Connection connection = DBOpenHelper.getConn(); + + List> datalist; + datalist = new ArrayList>(); + try{ + String sql = "select * from operations where phonenum = ?"; + + if(connection != null){ + PreparedStatement ps = connection.prepareStatement(sql); + if(ps != null){ + Log.e(TAG, "phonenum: " + phonenum); + ps.setString(1,phonenum); + ResultSet rs = ps.executeQuery(); + + int count = rs.getMetaData().getColumnCount(); + while(rs.next()){ + Map map = new HashMap(); + for(int i = 1; i <= count; i++){ + String field = rs.getMetaData().getColumnName(i); + if(field.equals("pickupcode")){ + map.put(field, rs.getString(field)); + } + if(field.equals("time")) { + map.put(field, rs.getString(field)); + } + } + datalist.add(map); + } + connection.close(); + ps.close(); + }else{ + Log.e(TAG, "ps is null"); + } + }else{ + Log.e(TAG, "connection is null"); + } + }catch (Exception e){ + e.printStackTrace(); + Log.d(TAG, "search bug: " + e.getMessage()); + } + return datalist; + } } diff --git a/src/Logistics/app/src/main/java/com/example/logistics/ui/HistoryActivity.java b/src/Logistics/app/src/main/java/com/example/logistics/ui/HistoryActivity.java new file mode 100644 index 0000000..4cc6c2e --- /dev/null +++ b/src/Logistics/app/src/main/java/com/example/logistics/ui/HistoryActivity.java @@ -0,0 +1,123 @@ +package com.example.logistics.ui; + +import androidx.appcompat.app.AppCompatActivity; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Intent; +import android.media.Image; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.View; +import android.widget.AbsListView; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ImageButton; +import android.widget.ListView; +import android.widget.SimpleAdapter; +import android.widget.AbsListView.OnScrollListener; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.Toast; + +import com.example.logistics.R; +import com.example.logistics.dao.goodDao; +import com.example.logistics.dao.operationDao; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class HistoryActivity extends Activity implements OnItemClickListener, OnScrollListener, View.OnClickListener { + + private String TAG = "HistoryActivity"; + private ListView lv_history; + private ArrayAdapter arr_adapter; + private SimpleAdapter simp_adapter; + private String phonenum; + private List> dataList; + private ImageButton sync_his; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_history); + sync_his = (ImageButton) findViewById(R.id.sync_his); + dataList=new ArrayList>(); + lv_history = (ListView) findViewById(R.id.lv_history); + + simp_adapter=new SimpleAdapter(this, dataList, R.layout.item, new String[]{"pickupcode","time"}, new int[]{R.id.np_id,R.id.np_time}); + lv_history.setAdapter(simp_adapter); + lv_history.setOnItemClickListener(this); + lv_history.setOnScrollListener(this); + sync_his.setOnClickListener(this); + + Intent intent = getIntent(); + phonenum = intent.getStringExtra("user"); + + sync(); + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + // TODO Auto-generated method stub + String text=lv_history.getItemAtPosition(position)+""; + Toast.makeText(this, "position="+position+" text="+text, Toast.LENGTH_SHORT).show(); + } + + @Override + public void onClick(View v){ + switch(v.getId()){ + case R.id.sync_his: + sync(); + Toast.makeText(this, "同步成功", Toast.LENGTH_SHORT).show(); + } + } + @Override + public void onScrollStateChanged(AbsListView view, int scrollState){ + // TODO Auto-generated method stub + switch(scrollState){ + case SCROLL_STATE_FLING: + Log.i(TAG, "用户在手指离开屏幕之前,由于用力划了一下,试图仍依靠惯性继续滑动"); + break; + case SCROLL_STATE_IDLE: + Log.i(TAG, "视图已经停止滑动"); + break; + case SCROLL_STATE_TOUCH_SCROLL: + Log.i(TAG, "手指没有离开屏幕,视图正在滑动"); + break; + default: + break; + } + } + + @Override + public void onScroll(AbsListView view, int arg1, int arg2, int arg3){ + // TODO Auto-generated method stub + } + + public void sync(){ + new Thread(){ + @Override + public void run(){ + operationDao operationDao = new operationDao(); + dataList = operationDao.history(phonenum); + + int msg = 1; + hand1.sendEmptyMessage(msg); + } + }.start(); + } + + @SuppressLint("HandlerLeak") + final Handler hand1 = new Handler(){ + @Override + public void handleMessage(Message msg){ + if(msg.what == 1){ + simp_adapter=new SimpleAdapter(HistoryActivity.this, dataList, R.layout.item, new String[]{"pickupcode","time"}, new int[]{R.id.np_id,R.id.np_time}); + lv_history.setAdapter(simp_adapter); + } + } + }; +} \ No newline at end of file diff --git a/src/Logistics/app/src/main/java/com/example/logistics/ui/MainActivity.java b/src/Logistics/app/src/main/java/com/example/logistics/ui/MainActivity.java index 6fd1b09..fc419de 100644 --- a/src/Logistics/app/src/main/java/com/example/logistics/ui/MainActivity.java +++ b/src/Logistics/app/src/main/java/com/example/logistics/ui/MainActivity.java @@ -29,8 +29,7 @@ public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - Intent intent = new Intent(MainActivity.this, MenuActivity.class); - startActivity(intent); + Button loginButton = (Button) this.findViewById(R.id.LoginButton); Button signUpButton = (Button) this.findViewById(R.id.SignUpButton); @@ -68,8 +67,9 @@ public class MainActivity extends Activity { if(msg == 1){ User owner = userDao.findUser(userName.getText().toString().trim()); Intent intent = new Intent(MainActivity.this, MenuActivity.class); - intent.putExtra("name", owner.getPhoneNum()); + intent.putExtra("user", owner.getPhoneNum()); startActivity(intent); + finish(); } } }.start(); diff --git a/src/Logistics/app/src/main/java/com/example/logistics/ui/MenuActivity.java b/src/Logistics/app/src/main/java/com/example/logistics/ui/MenuActivity.java index 5f8b8d8..c366436 100644 --- a/src/Logistics/app/src/main/java/com/example/logistics/ui/MenuActivity.java +++ b/src/Logistics/app/src/main/java/com/example/logistics/ui/MenuActivity.java @@ -35,7 +35,7 @@ public class MenuActivity extends AppCompatActivity implements View.OnClickListe bindView(); Intent intent = getIntent(); - owner = intent.getStringExtra("name"); + owner = intent.getStringExtra("user"); selectTab(0); } @@ -94,6 +94,8 @@ public class MenuActivity extends AppCompatActivity implements View.OnClickListe mTextNum1.setVisibility(View.INVISIBLE); if (mFrag1 == null) { mFrag1 = new MyFragment1(); + + transaction.add(R.id.fragment_container, mFrag1); } else { //如果第一页对应的Fragment已经实例化,则直接显示出来 @@ -119,6 +121,10 @@ public class MenuActivity extends AppCompatActivity implements View.OnClickListe mTextNum3.setVisibility(View.INVISIBLE); if (mFrag3 == null) { mFrag3 = new MyFragment3(); + Bundle bundle = new Bundle(); + bundle.putString("user", owner); + mFrag3.setArguments(bundle); + transaction.add(R.id.fragment_container, mFrag3); } else { transaction.show(mFrag3); diff --git a/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment2.java b/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment2.java index fe58fd6..92f07e0 100644 --- a/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment2.java +++ b/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment2.java @@ -21,6 +21,7 @@ import android.widget.Toast; import androidx.annotation.Nullable; import com.example.logistics.R; +import com.example.logistics.dao.goodDao; import com.example.logistics.dao.operationDao; import com.example.logistics.dao.userDao; import com.example.logistics.entity.User; @@ -91,33 +92,52 @@ public class MyFragment2 extends Fragment implements View.OnClickListener{ button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Toast.makeText(mContext, "取件成功", Toast.LENGTH_LONG).show(); String pickupcode = PickUpCode.getText().toString().trim(); String phonenum = PhoneNum.getText().toString().trim(); Log.d("onclick", "123"); String QR_pickup = result.split(" ")[0]; String QR_phone = result.split(" ")[1]; - if (pickupcode.equals(QR_pickup) && pickupcode.equals(QR_phone)) { - Toast.makeText(mContext, "取件成功", Toast.LENGTH_LONG).show(); + if (pickupcode.equals(QR_pickup) && phonenum.equals(QR_phone)) { new Thread() { @Override public void run() { + int msg = 0; + operationDao operationDao = new operationDao(); + goodDao goodDao = new goodDao(); Bundle bundle = getArguments(); + String user = bundle.getString("user"); - boolean flag = operationDao.add(pickupcode, user); + + boolean flag1 = operationDao.add(pickupcode, user); + boolean flag2 = goodDao.delete(pickupcode); + + boolean flag = flag1 & flag2; if (flag) { - Log.d("add", "success"); - } else { - Log.d("add", "failed"); + msg = 1; } + hand1.sendEmptyMessage(msg); } }.start(); } else { Toast.makeText(mContext, "取件失败", Toast.LENGTH_LONG).show(); } } + + }); } + + @SuppressLint("HandlerLeak") + final Handler hand1 = new Handler() { + @Override + public void handleMessage(Message msg) { + if (msg.what == 1) { + Toast.makeText(mContext, "取件成功", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(mContext, "取件失败", Toast.LENGTH_SHORT); + } + } + }; } \ No newline at end of file diff --git a/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment3.java b/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment3.java index 3737ef5..2ff01f4 100644 --- a/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment3.java +++ b/src/Logistics/app/src/main/java/com/example/logistics/ui/MyFragment3.java @@ -1,16 +1,30 @@ package com.example.logistics.ui; import androidx.fragment.app.Fragment; + +import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.Nullable; import com.example.logistics.R; +import org.w3c.dom.Text; + public class MyFragment3 extends Fragment implements View.OnClickListener{ + private LinearLayout ll_waiting; + private LinearLayout ll_history; + private LinearLayout ll_exit; + private Context mContext; + private String user; + public MyFragment3(){ } @@ -20,12 +34,44 @@ public class MyFragment3 extends Fragment implements View.OnClickListener{ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.my_fragment3,container,false); + ll_waiting = (LinearLayout) view.findViewById(R.id.waiting); + ll_history = (LinearLayout) view.findViewById(R.id.history); + ll_exit = (LinearLayout) view.findViewById(R.id.exit); + + ll_waiting.setOnClickListener(this); + ll_history.setOnClickListener(this); + ll_exit.setOnClickListener(this); + + mContext = getActivity(); + + Bundle bundle = getArguments(); + user = bundle.getString("user"); + return view; } @Override public void onClick(View view) { + Intent intent; + switch(view.getId()){ + case R.id.waiting: + intent = new Intent(mContext, NoPickActivity.class); + intent.putExtra("user", user); + startActivity(intent); + break; + case R.id.history: + intent = new Intent(mContext, HistoryActivity.class); + intent.putExtra("user", user); + startActivity(intent); + break; + case R.id.exit: + Toast.makeText(mContext, "exit", Toast.LENGTH_SHORT).show(); + intent = new Intent(mContext, MainActivity.class); + startActivity(intent); + getActivity().finish(); + break; + } } } diff --git a/src/Logistics/app/src/main/java/com/example/logistics/ui/NoPickActivity.java b/src/Logistics/app/src/main/java/com/example/logistics/ui/NoPickActivity.java new file mode 100644 index 0000000..d23a064 --- /dev/null +++ b/src/Logistics/app/src/main/java/com/example/logistics/ui/NoPickActivity.java @@ -0,0 +1,134 @@ +package com.example.logistics.ui; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.View; +import android.widget.AbsListView; +import android.widget.AbsListView.OnScrollListener; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ImageButton; +import android.widget.ListView; +import android.widget.NumberPicker; +import android.widget.SimpleAdapter; +import android.widget.Toast; + +import com.example.logistics.R; +import com.example.logistics.dao.goodDao; +import com.example.logistics.dao.userDao; +import com.example.logistics.entity.User; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; + +public class NoPickActivity extends Activity implements OnItemClickListener, OnScrollListener, View.OnClickListener { + + private String TAG = "NoPickActivity"; + private ListView lv_nopick; + private ArrayAdapter arr_adapter; + private SimpleAdapter simp_adapter; + private String phonenum; + private List> dataList; + private ImageButton sync_np; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_no_pick); + + dataList=new ArrayList>(); + lv_nopick = (ListView) findViewById(R.id.lv_nopick); + sync_np = (ImageButton) findViewById(R.id.sync_np); + + simp_adapter=new SimpleAdapter(this, dataList, R.layout.item, new String[]{"id","time"}, new int[]{R.id.np_id,R.id.np_time}); + lv_nopick.setAdapter(simp_adapter); + lv_nopick.setOnItemClickListener(this); + lv_nopick.setOnScrollListener(this); + sync_np.setOnClickListener(this); + + Intent intent = getIntent(); + phonenum = intent.getStringExtra("user"); + + sync(); + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + // TODO Auto-generated method stub + String text=lv_nopick.getItemAtPosition(position)+""; + Toast.makeText(this, "position="+position+" text="+text, Toast.LENGTH_SHORT).show(); + } + + @Override + public void onClick(View v){ + switch(v.getId()){ + case R.id.sync_np: + sync(); + Toast.makeText(this, "同步成功", Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void onScrollStateChanged(AbsListView view, int scrollState){ + // TODO Auto-generated method stub + switch(scrollState){ + case SCROLL_STATE_FLING: + Log.i(TAG, "用户在手指离开屏幕之前,由于用力划了一下,试图仍依靠惯性继续滑动"); + break; + case SCROLL_STATE_IDLE: + Log.i(TAG, "视图已经停止滑动"); + break; + case SCROLL_STATE_TOUCH_SCROLL: + Log.i(TAG, "手指没有离开屏幕,视图正在滑动"); + break; + default: + break; + } + } + + @Override + public void onScroll(AbsListView view, int arg1, int arg2, int arg3){ + // TODO Auto-generated method stub + } + + public void sync(){ + new Thread(){ + @Override + public void run(){ + goodDao goodDao = new goodDao(); + dataList = goodDao.nopick(phonenum); + + int msg = 1; + hand1.sendEmptyMessage(msg); + } + }.start(); + } + + @SuppressLint("HandlerLeak") + final Handler hand1 = new Handler(){ + @Override + public void handleMessage(Message msg){ + if(msg.what == 1){ + simp_adapter=new SimpleAdapter(NoPickActivity.this, dataList, R.layout.item, new String[]{"id","time"}, new int[]{R.id.np_id,R.id.np_time}); + lv_nopick.setAdapter(simp_adapter); + } + } + }; + + +} \ No newline at end of file diff --git a/src/Logistics/app/src/main/res/drawable/sync.png b/src/Logistics/app/src/main/res/drawable/sync.png new file mode 100644 index 0000000..a837486 Binary files /dev/null and b/src/Logistics/app/src/main/res/drawable/sync.png differ diff --git a/src/Logistics/app/src/main/res/layout/activity_history.xml b/src/Logistics/app/src/main/res/layout/activity_history.xml new file mode 100644 index 0000000..31403d2 --- /dev/null +++ b/src/Logistics/app/src/main/res/layout/activity_history.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Logistics/app/src/main/res/layout/activity_no_pick.xml b/src/Logistics/app/src/main/res/layout/activity_no_pick.xml new file mode 100644 index 0000000..38ae3b8 --- /dev/null +++ b/src/Logistics/app/src/main/res/layout/activity_no_pick.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Logistics/app/src/main/res/layout/item.xml b/src/Logistics/app/src/main/res/layout/item.xml new file mode 100644 index 0000000..b4e94b7 --- /dev/null +++ b/src/Logistics/app/src/main/res/layout/item.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/Logistics/app/src/main/res/layout/my_fragment2.xml b/src/Logistics/app/src/main/res/layout/my_fragment2.xml index ff1a7a5..d1f3fa6 100644 --- a/src/Logistics/app/src/main/res/layout/my_fragment2.xml +++ b/src/Logistics/app/src/main/res/layout/my_fragment2.xml @@ -3,12 +3,14 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:padding="5dp"> + android:padding="5dp" + android:background="#F5F5F5">