成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Android前后端gson傳輸數(shù)據(jù)和listview獲取position

William_Sang / 2072人閱讀

摘要:如何刪除中的某一項,之后更新該并獲取到該項的信息。遇到這個問題是在要實現(xiàn)收藏列表的刪除時,收藏列表就是一個在這個上有一個刪除,要在點擊這個時刪除這個位置的,并且獲取到這個中店鋪的等信息,從而發(fā)送給后端,將數(shù)據(jù)庫中信息一并刪除。

這個暑假學(xué)校安排一個月的實訓(xùn),內(nèi)容就是,一個團隊開發(fā)一個app,相信對于有經(jīng)驗的人來說是很簡單的事,但是我在此之前從來沒有接觸過Android,java基礎(chǔ)也接近于0,所以開發(fā)過程中遇到了很多問題,剛好項目經(jīng)理要求我們寫寫技術(shù)總結(jié),就把寫好的東西發(fā)到這里,當(dāng)作記錄吧。

1、 如何在前后端之間進行數(shù)據(jù)的傳輸
這是最初擺在我面前的一道難題,具體來說問題是這樣的:如何獲取到手機前端中的數(shù)據(jù)?如何將它發(fā)送給后端?如何獲取后端數(shù)據(jù)庫反饋到前端的信息?

第一個問題比較簡單,獲取前端的數(shù)據(jù)主要是來自TextView或者SP文件,如何獲取TextView的數(shù)據(jù)就不需要說了,獲取Sp文件中的數(shù)據(jù)則需要用到一些SharedPreference中的函數(shù)

SharedPreferences pref = getSharedPreferences("user_data",MODE_PRIVATE);

也是很簡單的。
對于第二個問題,方法應(yīng)該是很多的,但是目前會用的只有老師教的方法,通過http協(xié)議作為通信方式,用gson包裝數(shù)據(jù),具體代碼就像這樣的:

String path = "http://" + ip.ip + "/Hello_Web/loginServlet";
path = path + "?&account=" + account + "&password=" + passwd;
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();

這是實現(xiàn)登錄模塊的,其中path也就是http通信的表單,表單格式一般是:

http://192.168.1.102:8080/Hello_Web/ loginServlet?+……

其中192.168.1.102:8080是我們后端的ip端口,也就是阿黃電腦的ip,Hello_Web/ loginServlet是后端處理登錄事件的Servlet名稱,在”?”之后要寫的則是要傳輸?shù)臄?shù)據(jù)名稱和內(nèi)容,比如”&account=”+account,&account是一個自己定義的名字,在后端會通過這個名稱來獲取數(shù)據(jù),數(shù)據(jù)也就是account的值;如果要傳輸?shù)氖且慌鷶?shù)據(jù)的話,通過這種方式一個一個填太麻煩了,那么就要用到gson了,gson是json的一個變種吧,比如可以用gson封裝一個對象的數(shù)據(jù),甚至是一個列表的數(shù)據(jù),都是很方便的。

第三個問題的話,如果不牽涉到圖片,也是比較簡單的,如果想要知道圖片我們是怎么處理的話,建議去看其他幾位組員的博客。
因為后端在處理發(fā)送反饋時,一般是通過outprint(data),data一般是一個字符串,前端在接收這個數(shù)據(jù)時,需要一連串的處理,才能獲取到這個字符串,比如:

URLConnection conn = url.openConnection;
InputStream stream = conn.getInputStream();
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader br = new BufferedReader(reader);
str = br.readLine();

通過這樣一系列的流操作,字節(jié)轉(zhuǎn)換,最終獲取到的str也就是后端返回的數(shù)據(jù),至于怎么把這個返回的數(shù)據(jù)變成我們要顯示到前端的東西,又是另外一個問題了。

2、 如何刪除ListView中的某一項,之后更新該ListView并獲取到該項的信息。
遇到這個問題是在要實現(xiàn)收藏列表的刪除時,收藏列表就是一個listview,在這個listview上有一個刪除button,要在點擊這個button時刪除這個位置的listview,并且獲取到這個listview中店鋪的id等信息,從而發(fā)送給后端,將數(shù)據(jù)庫中信息一并刪除。
首先,需要自定義一個atapter來適配這個listview,這個adapter需要有OnClickListener接口:

 public class ContentAdapter extends BaseAdapter implements OnClickListener{}

并且需要有自定義接口,用于回調(diào)按鈕點擊事件到Activity :

private Callback mCallback;

    public interface Callback {
        public void click(View v);
    }

響應(yīng)按鈕點擊事件,調(diào)用子定義接口,并傳入View:

    @Override
    public void onClick(View v) {
        mCallback.click(v);
    }

在Activity中:

public class CollectStoreActivity extends Activity implements OnItemClickListener,Callback{}

要有CallBack的接口,同時在Activity中重寫click()方法:

 @Override
public void click(final View v) {

        final int position1 = (Integer)v.getTag();
        new AlertDialog.Builder(CollectStoreActivity.this).setTitle("提示信息").setMessage("確認要取消收藏嗎?")
                .setCancelable(false).setPositiveButton("確認", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                System.out.println("----------------int the click: "+v.getTag());
                list2.remove(position1);
                contentAdapter.notifyDataSetChanged();
                lv.invalidate();
                if (list2.size()==0)
                {
                    collect_tv.setText("您當(dāng)前沒有收藏店鋪");
                    collect_pic.setImageResource(R.mipmap.bg_empty);
                }
            }
        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        }).show();
}

在這里的:

 list2.remove(position1);
 contentAdapter.notifyDataSetChanged();
 lv.invalidate();

就可以實現(xiàn)實時的刪除后更新listview,之后再將這個list2的內(nèi)容寫入Sp文件,與之前的信息比較得出刪除的店鋪的id,重寫onBackPressed()方法,發(fā)送給數(shù)據(jù)庫。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64955.html

相關(guān)文章

  • 【騰訊Bugly干貨分享】Android ListView與RecyclerView對比淺析--緩存

    摘要:數(shù)據(jù)源頻繁更新的場景,如彈幕等的優(yōu)勢會非常明顯進一步來講,結(jié)論是列表頁展示界面,需要支持動畫,或者頻繁更新,局部刷新,建議使用,更加強大完善,易擴展其它情況如微信卡包列表頁兩者都,但在使用上會更加方便,快捷。 本文來自于騰訊bugly開發(fā)者社區(qū),非經(jīng)作者同意,請勿轉(zhuǎn)載,原文地址:http://dev.qq.com/topic/5811d... 作者:黃寧源 一,背景 RecyclerV...

    wangzy2019 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<