English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
بضغط على الزر، يتم تنفيذ تحديث أسفل الصفحة تلقائيًا، ويمكن أيضًا تحديثه يدويًا، وبعد ذلك يظهر سطر إضافي في النهاية. هناك أربعة بطاقات خيارات.
منذ يومين طلب المشرف مني تطوير تطبيق لتحديد مقاعد المختبرات للطلاب البكالوريوس، والبداية كانت من هنا. بينما كنت أعمل، واجهت العديد من المشاكل، ولكن تم حلها جميعها. يبدو أن النتيجة جيدة، يجب تنظيمها.
MainActivity
باكاجيت كوم.ايكسامبل.فراجمينتمايستيست; استيراد اندرويد كونتينت داياλογ اى ان دايالوغي; استيراد اندرويد جرافيكس كولر; استيراد اندرويد.او.باندل; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; استيراد اندرويد تيكست يوتيليتيس; import android.view.Menu; import android.view.MenuItem; استيراد اندرويد فيو; import android.view.View.OnClickListener; استيراد اندرويد ويدجت بوتن; استيراد اندرويد ويدجت تيكسيت فيو; import com.example.dialog.CustomDialog; import com.example.dialog.CustomDialogChangePwd; import com.example.dialog.CustomDialogSignUp; import com.example.myapplication.CustomApplication; استيراد كومبيوتر اكسامبل يوتيليتيس توست يوتيليتيس; public class MainActivity extends FragmentActivity { public static final String serverAddress = "http://192.168.1.101"; public static final String serverPort = "8080"; OneFragment onefragment; TwoFragment twofragment; ThreeFragment threefragment; FourFragment fourfragment; Button btn1, btn2, btn3, btn4; OnClickListener clicklistener; TextView stu_msg; private CustomApplication app; /** * 用于对Fragment进行管理 */ FragmentManager fragementManager; protected void onCreate(Bundle savedInstanceState) { super.onCreate(setContentView); setContentView(R.layout.activity_main); app = (CustomApplication) getApplication(); // الحصول على كائن CustomApplication // يجب ان يستمر الكائن الفرعي للنشاط لاستخدام getSupportFragmentManager()؛ من الأفضل استخدام v4.app، لا يستخدمها أحد الآن fragementManager = getSupportFragmentManager(); init(); // عند بدء التطبيق لأول مرة يتم اختيار tab الاول setTabSelection(0);// لا يمكن التمرير في الجانبين بالافتراض } public void init() { stu_msg = (TextView) findViewById(R.id.stu_msg); btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn3 = (Button) findViewById(R.id.btn3); btn4 = (Button) findViewById(R.id.btn4); clicklistener = new OnClickListener() { public void onClick(View arg0) { int id = arg0.getId(); switch (id) { case R.id.btn1: setTabSelection(0); break; case R.id.btn2: setTabSelection(1); break; case R.id.btn3: setTabSelection(2); break; case R.id.btn4: setTabSelection(3); break; default: break; } } }; btn1.setOnClickListener(clicklistener); btn2.setOnClickListener(clicklistener); btn3.setOnClickListener(clicklistener); btn4.setOnClickListener(clicklistener); } private void setTabSelection(int index) { clearSelection();// 每次选中之前先清楚掉上次的选中状态 // 开启一个Fragment事务 FragmentTransaction transaction = fragementManager.beginTransaction(); // 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况 hideFragements(transaction); switch (index) { case 0: btn1.setBackgroundColor(Color.parseColor("#CFEFEF")); btn1.setTextColor(Color.parseColor("#FFFFFF")); app.setRoom(btn1.getText().toString()); if (onefragment == null) { onefragment = new OneFragment(); transaction.add(R.id.framelayout, onefragment); } else { transaction.show(onefragment); onefragment.mPullRefreshListView.setRefreshing(true); } break; case 1: btn2.setBackgroundColor(Color.parseColor("#CFEFEF")); btn2.setTextColor(Color.parseColor("#FFFFFF")); app.setRoom(btn2.getText().toString()); if (twofragment == null) { twofragment = new TwoFragment(); transaction.add(R.id.framelayout, twofragment); } else { transaction.show(twofragment); twofragment.mPullRefreshListView.setRefreshing(true); } break; case 2: btn3.setBackgroundColor(Color.parseColor("#CFEFEF")); btn3.setTextColor(Color.parseColor("#FFFFFF")); app.setRoom(btn3.getText().toString()); if (threefragment == null) { threefragment = new ThreeFragment(); transaction.add(R.id.framelayout, threefragment); } else { transaction.show(threefragment); threefragment.mPullRefreshListView.setRefreshing(true); } break; case 3: btn4.setBackgroundColor(Color.parseColor("#CFEFEF")); btn4.setTextColor(Color.parseColor("#FFFFFF")); app.setRoom(btn4.getText().toString()); if (fourfragment == null) { fourfragment = new FourFragment(); transaction.add(R.id.framelayout, fourfragment); } else { transaction.show(fourfragment); fourfragment.mPullRefreshListView.setRefreshing(true); } break; default: break; } transaction.commit(); } /** * القاء كل الحالات المحددة. */ private void clearSelection() { btn1.setBackgroundColor(Color.parseColor("#EFEFEF")); btn1.setTextColor(Color.parseColor("#234567")); btn2.setBackgroundColor(Color.parseColor("#EFEFEF")); btn2.setTextColor(Color.parseColor("#234567")); btn3.setBackgroundColor(Color.parseColor("#EFEFEF")); btn3.setTextColor(Color.parseColor("#234567")); btn4.setBackgroundColor(Color.parseColor("#EFEFEF")); btn4.setTextColor(Color.parseColor("#234567")); } /** * تضع جميع الفراجمينتات في حالة إخفاء. * * @param ترانزاكتيون * تستخدم لتنفيذ عمليات على الفراجمينت */ خاصة void اخفيفراجمينتات(ترانزاكتيونترانزاكتيون) { إذا (فراجمينت1 != null) { ترانزاكتيون.اخفي(فراجمينت1); } إذا (فراجمينت2 != null) { ترانزاكتيون.اخفي(فراجمينت2); } إذا (فراجمينت3 != null) { ترانزاكتيون.اخفي(فراجمينت3); } إذا (فراجمينت4 != null) { ترانزاكتيون.اخفي(فراجمينت4); } } }
جميع الفراجمينتات متشابهة تقريباً، هنا هو الأول:
باكاجيت كوم.ايكسامبل.فراجمينتمايستيست; استيراد جافا.استفاده.آلليست; استيراد جافا.استفاده.ليكيد; استيراد جافا يوتيليتيس ليست; استيراد اندرويد.آپ.آكتيفيتي; استيراد اندرويد.او.آسينكريس تو كلاس; استيراد اندرويد.او.باندل; استيراد اندرويد.سپورتيف.آفريجنت.فراجمينت; استيراد اندرويد.استفاده.لوغ; استيراد اندرويد فيو انلايتيشن فير; استيراد اندرويد فيو; استيراد اندرويد فيو جروب; استيراد اندرويد.ويجت.آدارفيجيت; استيراد اندرويد.ويجت.آدارتريسورتيه; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import com.example.adapter.MyAdapter; استيراد كومبيوتر اكسامبل داواي كومبيوتر روم ستاتس; استيراد كومبيوتر اكسامبل يوتيليتيس توست يوتيليتيس; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2; import com.handmark.pulltorefresh.library.PullToRefreshListView; public class OneFragment extends Fragment { String room = "204"; public PullToRefreshListView mPullRefreshListView; // private ArrayAdapter<String> mAdapter; private int mItemCount = 9; // private LinkedList<String> mListItems; private MyAdapter mAdapter; private List<ComputerRoomStatus> data; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceStatus) { View view = inflater.inflate(R.layout.twolayout, container, false); mPullRefreshListView = (PullToRefreshListView) view .findViewById(R.id.pull_refresh_list_2); mPullRefreshListView.setMode(Mode.PULL_FROM_START); return view; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { // TODO Auto-generated method stub super.onViewCreated(view, savedInstanceState); initDatas(); // mAdapter1 = new MyAdapter(getActivity(), data); mAdapter = new MyAdapter(getActivity(), data, room,mPullRefreshListView); mPullRefreshListView.setAdapter(mAdapter); mPullRefreshListView .setOnRefreshListener(new OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh( PullToRefreshBase<ListView> refreshView) { Log.e("TAG", "onPullDownToRefresh"); // 这里写下拉刷新的任务 new GetDataTask().execute(); } @Override public void onPullUpToRefresh( PullToRefreshBase<ListView> refreshView) { Log.e("TAG", "onPullUpToRefresh"); // 这里写上拉加载更多的任务 new GetDataTask().execute(); } }); mPullRefreshListView.setRefreshing(true); } private void initDatas() { // 初始化数据和数据源 data = new ArrayList<ComputerRoomStatus>(); for (int i = 0; i < mItemCount; i++) { data.add(new ComputerRoomStatus(i, "1", "1", "3", "1", "1", "1")); } } protected void autoRefresh() { mPullRefreshListView.setRefreshing(true); } // 请求网络接口,这里是做的假数据 private class GetDataTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { try { // TODO 解析json ثريد سليب(1000);} } كايث (اينترروپروتس اى انترروپروتس اى); } رجع "" + (مアイتم كونت كرايسن++;); } @Override بروتكتيد وايلاي اونسي بست كونتكس(ستينج رزلت) { // دايتا اضافه كونكتر كومبيوتر روم ستاتس انت بارايت انت بارايت انت بارايت); // كومبيوتر روم ستاتس(1,رزلت,رزلت,رزلت,رزلت,رزلت,رزلت); دياتا اضافه كونكتر كومبيوتر روم ستاتس انت باريهنت انت بارايت انت بارايت انت بارايت); "3", "1", "1", "1")); مادابتر نوفيديت ان نوفيديت تونتيت(); مبول ريفريش ليست فيو انريفيش كومبلت(); } } }
ماي اداپتير
باكاج كومبيوتر اكسامبل اداپتير; استيراد جافا يوتيليتيس ليست; استيراد اندرويد كونتينت كونتكس; استيراد اندرويد كونتينت داياλογ اى ان دايالوغي; استيراد اندرويد كونتينت ريز كولر ستيت لست; استيراد اندرويد جرافيكس كولر; استيراد اندرويد تيكست يوتيليتيس; استيراد اندرويد فيو انلايتيشن فير; استيراد اندرويد فيو; استيراد اندرويد فيو جروب; استيراد اندرويد ويدجت بايس اداپتير; استيراد اندرويد ويدجت بوتن; استيراد اندرويد ويدجت تيكسيت فيو; استيراد كومبيوتر اكسامبل داواي كومبيوتر روم ستاتس; استيراد كومبيوتر اكسامبل دايلوج كاست دايلوج اوردر; استيراد كومبيوتر اكسامبل فراجمينت مايتست آر; استيراد كومبيوتر اكسامبل يوتيليتيس توست يوتيليتيس; import com.handmark.pulltorefresh.library.PullToRefreshListView; public class MyAdapter extends BaseAdapter { private Context context; private List<ComputerRoomStatus> data; private LayoutInflater layoutInflater; private String room; private ViewHolder holder = null; private PullToRefreshListView mPullRefreshListView; public MyAdapter(Context context, List<ComputerRoomStatus> data, String room, PullToRefreshListView mPullRefreshListView) { this.context = context; this.data = data; this.room = room; this.mPullRefreshListView = mPullRefreshListView; layoutInflater = LayoutInflater.from(context); } @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { holder = new ViewHolder(); convertView = layoutInflater.inflate(R.layout.lv_item, null); holder.seatId = (TextView) convertView.findViewById(R.id.seatId); holder.time1 = (Button) convertView.findViewById(R.id.time1); holder.time2 = (Button) convertView.findViewById(R.id.time2); holder.time3 = (Button) convertView.findViewById(R.id.time3); holder.time4 = (Button) convertView.findViewById(R.id.time4); holder.time5 = (Button) convertView.findViewById(R.id.time5); holder.time6 = (Button) convertView.findViewById(R.id.time6); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // الحصول على实体 كائن من المجموعة final ComputerRoomStatus s = data.get(position); holder.seatId.setText(s.getId() + ""); holder.time1.setOnClickListener(new lvButtonListener(position)); holder.time2.setOnClickListener(new lvButtonListener(position)); holder.time3.setOnClickListener(new lvButtonListener(position)); holder.time4.setOnClickListener(new lvButtonListener(position)); holder.time5.setOnClickListener(new lvButtonListener(position)); holder.time6.setOnClickListener(new lvButtonListener(position)); //... return convertView; } class lvButtonListener implements View.OnClickListener { private int position; lvButtonListener(int pos) { position = pos; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.time1: showDialog(position, "1"); break; case R.id.time2: showDialog(position, "2"); break; case R.id.time3: showDialog(position, "3"); break; case R.id.time4: showDialog(position, "4"); break; case R.id.time5: showDialog(position, "5"); break; case R.id.time6: showDialog(position, "6"); break; default: break; } } } public void showDialog(final int id, final String الساحرة) { final CustomDialogOrder.Builder builder = new CustomDialogOrder.Builder; السياق); builder.setTitle("حجز استخدام الجهاز"); builder.setPositiveButton("حجز", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); // عند تقديم الطلب، يتم تقديم room وposition والساحرة من التطبيق ToastUtils.MyToast(السياق, غرفة + ":" + id + ":" + الساحرة); //TODO ربط النصوص باستخدام GET إلى واجهة معينة //TODO وإعادة تحديث تنفيذ السحب لأسفل mPullRefreshListView.setRefreshing(true); } }); builder.setNegativeButton("إلغاء", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } } class ViewHolder { TextView seatId; Button time1, time2, time3, time4, time5, time6; }
ما تم ذكره أعلاه هو معلومات حول مثال بسيط للغاية لتحديث التأثير في تطبيق أندرويد مثل اليوم في العناوين التي قدمها المحرر لكم، نأمل أن تكون مفيدًا لكم، إذا كان لديكم أي أسئلة، فلا تترددوا في ترك تعليق، وسأقوم بالرد على أسئلتكم في أقرب وقت، وأشكركم أيضًا على دعمكم لموقع呐喊 لتعليم البرمجة!
البيان: محتوى هذا المقال تم جمعه من الإنترنت، ملكية المحتوى لصاحب الحقوق، تم جمع المحتوى من قبل المستخدمين عبر الإنترنت بشكل تلقائي، هذا الموقع لا يمتلك حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (باستبدال # بـ @) لتقديم الشكوى، وتقديم الأدلة ذات الصلة، إذا تم التحقق من صحة الشكوى، فإن هذا الموقع سيقوم بإزالة المحتوى المشبوه فوراً.