English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Cliccando il pulsante, viene eseguita automaticamente una refresh in basso, ma può essere anche aggiornato manualmente. Dopo aver aggiornato, viene aggiunta una riga in più. Ci sono quattro schede.
Due giorni fa, il mio mentore mi ha chiesto di sviluppare un'app per prenotare posti nei laboratori per gli studenti universitari, l'idea è venuta da qui. Mentre lavoravo, ho incontrato molti problemi, ma li ho risolti tutti. Il risultato sembra abbastanza buono, organizziamolo.
MainActivity
package com.example.fragmentmytest; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.example.dialog.CustomDialog; import com.example.dialog.CustomDialogChangePwd; import com.example.dialog.CustomDialogSignUp; import com.example.myapplication.CustomApplication; import com.example.utils.ToastUtils; 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; /** * Utilizzato per la gestione dei Fragment */ FragmentManager fragementManager; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); app = (CustomApplication) getApplication(); // 获取CustomApplication对象 // 必须继承FragmentActivity才能使用getSupportFragmentManager();最好使用v4.app,现在已经很少有人使用app中的了 fragementManager = getSupportFragmentManager(); init(); // 第一次启动时选择第0个标签 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();// Prima di selezionare, cancellare lo stato di selezione precedente // Aprire una transazione di Fragment FragmentTransaction transaction = fragementManager.beginTransaction(); // Prima di nascondere tutti i Fragment, per prevenire la situazione in cui più di un Fragment viene visualizzato sulla schermata 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(); } /** * Rimuovere tutte le selezioni. */ 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")); } /** /* Imposta tutti i Fragment in stato di invisibilità. /* @param transaction /* Utilizzato per eseguire operazioni sui Fragment /* */ private void hideFragments(FragmentTransaction transaction) { if (onefragment != null) { transaction.hide(onefragment); } if (twofragment != null) { transaction.hide(twofragment); } if (threefragment != null) { transaction.hide(threefragment); } if (fourfragment != null) { transaction.hide(fourfragment); } } }
Tutti i Fragment sono più o meno uguali, questo è il primo:
package com.example.fragmentmytest; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget(AdapterView<?>); import android.widget.ArrayAdapter; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import com.example.adapter.MyAdapter; import com.example.dao.ComputerRoomStatus; import com.example.utils.ToastUtils; 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 Thread.sleep(1000);} } catch (InterruptedException e) { } return "" + (mItemCount++); } @Override protected void onPostExecute(String result) { // data.add(new // ComputerRoomStatus(1,result,result,result,result,result,result)); data.add(new ComputerRoomStatus(Integer.parseInt(result), "", "", "3", "1", "1", "1")); mAdapter.notifyDataSetChanged(); mPullRefreshListView.onRefreshComplete(); } } }
MyAdapter
package com.example.adapter; import java.util.List; import android.content.Context; import android.content.DialogInterface; import android.content.res.ColorStateList; import android.graphics.Color; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.TextView; import com.example.dao.ComputerRoomStatus; import com.example.dialog.CustomDialogOrder; import com.example.fragmentmytest.R; import com.example.utils.ToastUtils; 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(); } // Ottenere l'oggetto dell'entità dalla raccolta 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)); // Omissis parte non significativa...... 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 witch) { final CustomDialogOrder.Builder builder = new CustomDialogOrder.Builder; context); builder.setTitle("Prenotazione per l'uso del computer"); builder.setPositiveButton("Prenotazione", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); // Invio dei dati application room e position e witch al momento del submit ToastUtils.MyToast(context, room + ":" + id + ":" + witch); //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; }
以上所述是小编给大家介绍的Android模拟今日头条简单的刷新效果实例代码的相关知识,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对呐喊教程网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#oldtoolbag.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。