摘要:如何刪除中的某一項(xiàng),之后更新該并獲取到該項(xiàng)的信息。遇到這個(gè)問(wèn)題是在要實(shí)現(xiàn)收藏列表的刪除時(shí),收藏列表就是一個(gè)在這個(gè)上有一個(gè)刪除,要在點(diǎn)擊這個(gè)時(shí)刪除這個(gè)位置的,并且獲取到這個(gè)中店鋪的等信息,從而發(fā)送給后端,將數(shù)據(jù)庫(kù)中信息一并刪除。
這個(gè)暑假學(xué)校安排一個(gè)月的實(shí)訓(xùn),內(nèi)容就是,一個(gè)團(tuán)隊(duì)開發(fā)一個(gè)app,相信對(duì)于有經(jīng)驗(yàn)的人來(lái)說(shuō)是很簡(jiǎn)單的事,但是我在此之前從來(lái)沒(méi)有接觸過(guò)Android,java基礎(chǔ)也接近于0,所以開發(fā)過(guò)程中遇到了很多問(wèn)題,剛好項(xiàng)目經(jīng)理要求我們寫寫技術(shù)總結(jié),就把寫好的東西發(fā)到這里,當(dāng)作記錄吧。
1、 如何在前后端之間進(jìn)行數(shù)據(jù)的傳輸
這是最初擺在我面前的一道難題,具體來(lái)說(shuō)問(wèn)題是這樣的:如何獲取到手機(jī)前端中的數(shù)據(jù)?如何將它發(fā)送給后端?如何獲取后端數(shù)據(jù)庫(kù)反饋到前端的信息?
第一個(gè)問(wèn)題比較簡(jiǎn)單,獲取前端的數(shù)據(jù)主要是來(lái)自TextView或者SP文件,如何獲取TextView的數(shù)據(jù)就不需要說(shuō)了,獲取Sp文件中的數(shù)據(jù)則需要用到一些SharedPreference中的函數(shù)
SharedPreferences pref = getSharedPreferences("user_data",MODE_PRIVATE);
也是很簡(jiǎn)單的。
對(duì)于第二個(gè)問(wèn)題,方法應(yīng)該是很多的,但是目前會(huì)用的只有老師教的方法,通過(guò)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();
這是實(shí)現(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是一個(gè)自己定義的名字,在后端會(huì)通過(guò)這個(gè)名稱來(lái)獲取數(shù)據(jù),數(shù)據(jù)也就是account的值;如果要傳輸?shù)氖且慌鷶?shù)據(jù)的話,通過(guò)這種方式一個(gè)一個(gè)填太麻煩了,那么就要用到gson了,gson是json的一個(gè)變種吧,比如可以用gson封裝一個(gè)對(duì)象的數(shù)據(jù),甚至是一個(gè)列表的數(shù)據(jù),都是很方便的。
第三個(gè)問(wèn)題的話,如果不牽涉到圖片,也是比較簡(jiǎn)單的,如果想要知道圖片我們是怎么處理的話,建議去看其他幾位組員的博客。
因?yàn)楹蠖嗽谔幚戆l(fā)送反饋時(shí),一般是通過(guò)outprint(data),data一般是一個(gè)字符串,前端在接收這個(gè)數(shù)據(jù)時(shí),需要一連串的處理,才能獲取到這個(gè)字符串,比如:
URLConnection conn = url.openConnection; InputStream stream = conn.getInputStream(); InputStreamReader reader = new InputStreamReader(stream); BufferedReader br = new BufferedReader(reader); str = br.readLine();
通過(guò)這樣一系列的流操作,字節(jié)轉(zhuǎn)換,最終獲取到的str也就是后端返回的數(shù)據(jù),至于怎么把這個(gè)返回的數(shù)據(jù)變成我們要顯示到前端的東西,又是另外一個(gè)問(wèn)題了。
2、 如何刪除ListView中的某一項(xiàng),之后更新該ListView并獲取到該項(xiàng)的信息。
遇到這個(gè)問(wèn)題是在要實(shí)現(xiàn)收藏列表的刪除時(shí),收藏列表就是一個(gè)listview,在這個(gè)listview上有一個(gè)刪除button,要在點(diǎn)擊這個(gè)button時(shí)刪除這個(gè)位置的listview,并且獲取到這個(gè)listview中店鋪的id等信息,從而發(fā)送給后端,將數(shù)據(jù)庫(kù)中信息一并刪除。
首先,需要自定義一個(gè)atapter來(lái)適配這個(gè)listview,這個(gè)adapter需要有OnClickListener接口:
public class ContentAdapter extends BaseAdapter implements OnClickListener{}
并且需要有自定義接口,用于回調(diào)按鈕點(diǎn)擊事件到Activity :
private Callback mCallback; public interface Callback { public void click(View v); }
響應(yīng)按鈕點(diǎn)擊事件,調(diào)用子定義接口,并傳入View:
@Override public void onClick(View v) { mCallback.click(v); }
在Activity中:
public class CollectStoreActivity extends Activity implements OnItemClickListener,Callback{}
要有CallBack的接口,同時(shí)在Activity中重寫click()方法:
@Override public void click(final View v) { final int position1 = (Integer)v.getTag(); new AlertDialog.Builder(CollectStoreActivity.this).setTitle("提示信息").setMessage("確認(rèn)要取消收藏嗎?") .setCancelable(false).setPositiveButton("確認(rèn)", 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)前沒(méi)有收藏店鋪"); 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();
就可以實(shí)現(xiàn)實(shí)時(shí)的刪除后更新listview,之后再將這個(gè)list2的內(nèi)容寫入Sp文件,與之前的信息比較得出刪除的店鋪的id,重寫onBackPressed()方法,發(fā)送給數(shù)據(jù)庫(kù)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64955.html
摘要:數(shù)據(jù)源頻繁更新的場(chǎng)景,如彈幕等的優(yōu)勢(shì)會(huì)非常明顯進(jìn)一步來(lái)講,結(jié)論是列表頁(yè)展示界面,需要支持動(dòng)畫,或者頻繁更新,局部刷新,建議使用,更加強(qiáng)大完善,易擴(kuò)展其它情況如微信卡包列表頁(yè)兩者都,但在使用上會(huì)更加方便,快捷。 本文來(lái)自于騰訊bugly開發(fā)者社區(qū),非經(jīng)作者同意,請(qǐng)勿轉(zhuǎn)載,原文地址:http://dev.qq.com/topic/5811d... 作者:黃寧源 一,背景 RecyclerV...
閱讀 3278·2023-04-25 15:44
閱讀 1931·2019-08-30 13:11
閱讀 2926·2019-08-30 11:11
閱讀 3135·2019-08-29 17:21
閱讀 1362·2019-08-29 15:38
閱讀 1016·2019-08-29 12:49
閱讀 1852·2019-08-28 18:19
閱讀 3276·2019-08-26 14:01