Android之 用MVP模式 來實現webview 記錄儲存與顯示,androidwebview

來源:互聯網
上載者:User

Android之 用MVP模式 來實現webview 記錄儲存與顯示,androidwebview

MVP在android上是常見的一種設計模式,在Launhcer,手機瀏覽器裡面經常會看到,觀摩了下其他大神寫的,現在總結下,操刀起來寫個demo

有什麼問題的地方請提出來。

大家一起研究討論。

demo ;http://download.csdn.net/detail/xufeifandj/8267619

demo主要是 首頁是一個webview,實現了 記錄的添加,與顯示。例子比較簡單。

整個項目的結構如下:




HistoryPresenter.java 主要是對view與model的控制相當於MVC中的 控制層吧。

具體實現添加記錄移除記錄等商務邏輯,都在HistoryModel裡面去實現了。而UI.java則是一個介面,通過商務邏輯分析,把資料交予UI去通知MainAcitivy更新View.

package com.ferris.ferrismvp.presenter;import java.util.List;import com.ferris.ferrismvp.UI;import com.ferris.ferrismvp.beam.History;import com.ferris.ferrismvp.model.HistoryModel;import com.ferris.ferrismvp.model.IHistoryModel;public class HistoryPresenter {private UI ui;private IHistoryModel iHistoryModel;public HistoryPresenter(UI ui) {// TODO Auto-generated constructor stubthis.ui=ui;this.iHistoryModel=new HistoryModel();}/** * 添加記錄 * @param hisString */public void AddHistory(History hisString){iHistoryModel.addHistory(hisString);}/** * 一掉記錄 * @param hisString */public void removeHistory(History hisString){iHistoryModel.removeHistory(hisString);}/** * 顯示所有記錄 */public void showHistorys(){List<History> histories=iHistoryModel.showAllHistory();ui.showAllHistory(histories);}}

記錄Model商務邏輯介面,添加刪除,查詢3個方法。

package com.ferris.ferrismvp.model;import java.util.List;import com.ferris.ferrismvp.beam.History;public interface IHistoryModel {public void addHistory(History history);public void removeHistory(History history);public List<History>  showAllHistory();}


具體實現邏輯

package com.ferris.ferrismvp.model;import java.util.ArrayList;import java.util.List;import com.ferris.ferrismvp.beam.History;public class HistoryModel implements IHistoryModel{private List<History> historys=new ArrayList<History>();public HistoryModel() {// TODO Auto-generated constructor stub}@Overridepublic void addHistory(History history) {// TODO Auto-generated method stubhistorys.add(history);}@Overridepublic void removeHistory(History history) {// TODO Auto-generated method stubint removeId=-1;for(int i=0;i<historys.size();i++){if(historys.get(i).getUrl().equals(history.getUrl())){removeId=i;}}if(removeId!=-1){historys.remove(removeId);}}@Overridepublic List<History> showAllHistory() {// TODO Auto-generated method stubreturn historys;}}

History Bean對象

package com.ferris.ferrismvp.beam;public class History {private String title;private String url;public History() {// TODO Auto-generated constructor stub}public History(String title,String url) {// TODO Auto-generated constructor stubthis.title=title;this.url=url;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}}

UI介面類

package com.ferris.ferrismvp;import java.util.List;import com.ferris.ferrismvp.beam.History;public interface UI {public void showAllHistory(List<History> historys);}


package com.ferris.ferrismvp;import java.util.List;import com.ferris.ferrismvp.beam.History;import com.ferris.ferrismvp.presenter.HistoryPresenter;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.widget.Button;import android.widget.Toast;public class MainActivity extends ActionBarActivity implements OnClickListener,UI{private WebView webView1 ;private Button addHistory,showHistory;private HistoryPresenter historyPresenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                findView();        initWebView();                historyPresenter=new HistoryPresenter(this);    }    private void initWebView() {// TODO Auto-generated method stubwebView1.getSettings().setJavaScriptEnabled(true);  webView1.loadUrl("http://www.baidu.com");  }private void findView() {// TODO Auto-generated method stubwebView1=(WebView)findViewById(R.id.webView1);addHistory=(Button)findViewById(R.id.button1);showHistory=(Button)findViewById(R.id.button2);        addHistory.setOnClickListener(this);        showHistory.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.button1://添加記錄historyPresenter.AddHistory(new History(webView1.getTitle(),webView1.getUrl()));break;case R.id.button2://顯示記錄historyPresenter.showHistorys();break;default:break;}}@Overridepublic void showAllHistory(List<History> historys) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, historys.toString(), Toast.LENGTH_SHORT).show();}  }




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.