Преглед на файлове

1.修改Android Apex Mobile Result Field Setting限制显示的数量。

Pen Li преди 7 години
родител
ревизия
4e19596136

+ 45 - 3
ApexDrivers/apexmobile/src/main/java/com/usai/apex/CustomizeFieldsActivity.java

@@ -20,6 +20,7 @@ import android.widget.ArrayAdapter;
 import android.widget.Button;
 import android.widget.TextView;
 
+import com.usai.util.RAUtil;
 import com.usai.util.dbUtil;
 
 import java.util.ArrayList;
@@ -28,7 +29,7 @@ import java.util.List;
 //import android.content.DialogInterface.OnClickListener;
 
 public class CustomizeFieldsActivity extends Activity implements
-		OnClickListener
+		OnClickListener, DragListView.DragListViewDelegate
 {
 	//
 	// @Override
@@ -55,6 +56,30 @@ public class CustomizeFieldsActivity extends Activity implements
 	private String user/* ,password */, function_name;
 	private int behavior;
 
+	@Override
+	public boolean dragListViewCanMoveItem(DragListView dragListView, int from, int to) {
+
+		int hidePosition = adapter.getPosition(mHideField);
+		// hide -> display && displayCount >= maxDisplayCount
+		if (from > hidePosition && to < hidePosition && hidePosition >= maxDisplayCount) {
+
+			new AlertDialog.Builder(this)
+					.setTitle("Warning")
+					.setMessage("the maximums count of display items is " + maxDisplayCount)
+					.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+						@Override
+						public void onClick(DialogInterface dialog, int which) {
+
+						}
+					})
+					.show();
+
+			return false;
+		}
+
+		return true;
+	}
+
 	public class fieldedit
 	{
 		public String name = null;
@@ -68,6 +93,9 @@ public class CustomizeFieldsActivity extends Activity implements
 		}
 	}
 
+	private boolean forNewResult = false;
+	private int maxDisplayCount = 0;
+
 	@Override
 	public void onCreate(Bundle savedInstanceState)
 	{
@@ -77,6 +105,10 @@ public class CustomizeFieldsActivity extends Activity implements
 		// password = getIntent().getStringExtra("password");
 		function_name = getIntent().getStringExtra("function_name");
 		behavior = getIntent().getIntExtra("behavior", -1);
+		forNewResult = getIntent().getBooleanExtra("forNewResult", false);
+		maxDisplayCount = getIntent().getIntExtra("maxDisplayCount", 0);
+
+
 		setContentView(R.layout.activity_customize_fields);
 		Button btnok = (Button) findViewById(R.id.btnok);
 		btnok.setOnClickListener(this);
@@ -86,6 +118,12 @@ public class CustomizeFieldsActivity extends Activity implements
 		initData();
 
 		DragListView dragListView = (DragListView) findViewById(R.id.drag_list);
+
+		if (forNewResult) {
+
+			dragListView.setDelegate(this);
+		}
+
 		adapter = new DragListAdapter(this, list);
 		dragListView.setAdapter(adapter);
 		
@@ -137,6 +175,8 @@ public class CustomizeFieldsActivity extends Activity implements
 		}
 		return super.onOptionsItemSelected(item);
 	}
+
+	private fieldedit mDisplayField, mHideField;
 	public void initData()
 	{
 		SQLiteDatabase db = dbUtil.OpenDB(this, null, false);
@@ -168,14 +208,16 @@ public class CustomizeFieldsActivity extends Activity implements
 		// {
 		// navList.add("Aѡ��" + i);
 		// }
-		list.add(new fieldedit(getString(R.string.str_displayitem), -1));
+		mDisplayField = new fieldedit(getString(R.string.str_displayitem), -1);
+		list.add(mDisplayField);
 		list.addAll(showList);
 
 		// for (int i = 0; i <18; i++)
 		// {
 		// moreList.add("Bѡ��" + i);
 		// }
-		list.add(new fieldedit(getString(R.string.str_hideitem), -2));
+		mHideField = new fieldedit(getString(R.string.str_hideitem), -2);
+		list.add(mHideField);
 		list.addAll(hideList);
 		dbUtil.CloseCursor(cursor);
 		dbUtil.CloseDB(db);

+ 46 - 2
ApexDrivers/apexmobile/src/main/java/com/usai/apex/DragListView.java

@@ -17,6 +17,8 @@ import android.widget.AdapterView;
 import android.widget.ImageView;
 import android.widget.ListView;
 
+import java.lang.ref.WeakReference;
+
 import static android.content.Context.WINDOW_SERVICE;
 
 public class DragListView extends ListView
@@ -274,11 +276,53 @@ public class DragListView extends ListView
 			/* @SuppressWarnings("unchecked") */
 			DragListAdapter adapter = (DragListAdapter) getAdapter();
 			fieldedit dragItem = adapter.getItem(dragSrcPosition);
-			adapter.remove(dragItem);
-			adapter.insert(dragItem, dragPosition);
+
+			DragListViewDelegate delegate = getDelegate();
+			if (delegate != null) {
+
+				int from = adapter.getPosition(dragItem);
+				int to = dragPosition;
+				if (delegate.dragListViewCanMoveItem(this, from, to)) {
+					adapter.remove(dragItem);
+					adapter.insert(dragItem, to);
+				}
+
+			} else {
+				// 保证在修改前的不变
+				adapter.remove(dragItem);
+				adapter.insert(dragItem, dragPosition);
+			}
 			// Toast.makeText(getContext(), adapter.getList().toString(),
 			// Toast.LENGTH_SHORT).show();
 		}
 
 	}
+
+	private WeakReference<DragListViewDelegate> mWeakDelegate;
+
+	public void setDelegate(DragListViewDelegate delegate) {
+		if (delegate != null) {
+
+			mWeakDelegate = new WeakReference<>(delegate);
+
+		} else {
+
+			mWeakDelegate = null;
+		}
+	}
+
+	public DragListViewDelegate getDelegate() {
+		if (mWeakDelegate != null) {
+
+			return mWeakDelegate.get();
+
+		} else {
+			return null;
+		}
+
+	}
+
+	public interface DragListViewDelegate {
+		boolean dragListViewCanMoveItem(DragListView dragListView, int from, int to);
+	}
 }

+ 3 - 0
ApexDrivers/apexmobile/src/main/java/com/usai/apex/apexresult/ApexResultActivity.java

@@ -407,6 +407,9 @@ public class ApexResultActivity extends AppCompatActivity implements ApexResultP
         intent.putExtra("user", ApexTrackingApplication.get_user());
         intent.putExtra("function_name", mParams.getString("module_name"));
         intent.putExtra("behavior", Network.BEHAVIOR_RESULT);
+        intent.putExtra("forNewResult", true);
+        intent.putExtra("maxDisplayCount", 3);
+
         startActivityForResult(intent,RequestCode.Field_Setting);
     }