不知如何描述问题,关于xutils中httpUtils.send(method, url, params, callBack)

假面行僧 2015-04-19 11:33:38
安卓项目。在callBack中得到的json数据如何给所在Activity使用。
代码如下:

httpUtils.send(HttpMethod.POST, httpurlstr, JawaInterface.genResJson(10013+""), new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
System.out.println("失败鸟");
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
// TODO Auto-generated method stub
System.out.println("jsonStr="+arg0.result);
try
{
JSONObject jsonObject = new JSONObject(arg0.result);
String resultMsg = (String) jsonObject.get("resultMsg");
DesEncrypt desEncrypt = new DesEncrypt();
String resultStr = desEncrypt.decrypt(resultMsg);

Gson gson=new Gson();
brand=gson.fromJson(resultStr, BrandRoot.class);

for(int i=0;i<brand.getData().size();++i){
final int j=i;
TextView textview = new TextView(AddAlbum.this);
textview.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("点击了:"+brand.getData().get(j).getName());
// brand_arr.add(textview );brand_arr为Activity里的一个list;
}
});
textview.setText(brand.getData().get(i).getName());
brand_list.addView(textview);
}
System.out.println("brand内"+brand.getMsg());
} catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

代码会生成若干个TextView且都存在点击事件,在这个Activity中同时还存在一个点击事件A,当我点击A时,他会打印出在这之前我都点击了上面的哪几个TextView。


最初我是在这个Activity中写了一个list,即上面被注释掉的brand_arr,每当我点击一个TextView,该TextView就会被添加到brand_arr中,可惜new RequestCallBack<String>()是个匿名内部类,我也不知道该如何处理了。

按我的推测,这种情况应该是非常常见的。比如你看新闻,浏览器从服务器得到一条条新闻标题,当你点击某一条时,他会根据你点击的是哪一条,跳转到该新闻的正文。这是如何做到的呢?

还请各位网友指条明路,感激不尽。
第一次发帖,格式若不正确还请见谅。




...全文
1503 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪月弦歌 2015-04-20
  • 打赏
  • 举报
回复
引用 2 楼 u010637392 的回复:
[quote=引用 1 楼 li352558693 的回复:] 楼主怎么不用listview来显示数据?你把网络获取的数据装到该列表列面就行啦
不能用listview,接收到的数据会生成一个个标签。类似于网易新闻的那种。如图:[/quote] 每一条数据都新生成一个Textview不太好,而且点击事件也不好处理。你可以这样做。 1,该Textview放到一个layout当中,并设置id,使用LayoutInflater来加载该view;以便与其他控件的点击事件分开处理 2,;把监听事件放到activity中,写一个就可以。然后textview.setOnclickListener(Activity.this);注意,在设置点击事件之前要把你从网络获取的的数据对象(DesEncrypt)附属到该textview的tag属性上;以便点击该textview时做具体的处理。 3,在Activity中的onClick方法中根据不同的DesEncrypt进行业务逻辑处理 。
假面行僧 2015-04-20
  • 打赏
  • 举报
回复
假面行僧 2015-04-20
  • 打赏
  • 举报
回复
引用 1 楼 li352558693 的回复:
楼主怎么不用listview来显示数据?你把网络获取的数据装到该列表列面就行啦


不能用listview,接收到的数据会生成一个个标签。类似于网易新闻的那种。如图:
雪月弦歌 2015-04-20
  • 打赏
  • 举报
回复
楼主怎么不用listview来显示数据?你把网络获取的数据装到该列表列面就行啦
sirnuo 2015-04-20
  • 打赏
  • 举报
回复
1. new RequestCallBack<String>() 匿名内部类也是可以定义为类的属性变量的。 var a = new RequestCallBack<String>(){}; 2. 内部类是可以访问外部类的数据的。。。。 可以把数据保存的外部类的属性中。 比如 List HashMap 3. View支持tag。 可以用view.setTag(Object obj)方法,把数据绑定到制定view。 点击时,再获取。 4. 保存数据不是问题,可以是类属性,也可以是public static全局变量; 只要建立了数据和view的对应关系,查找对应的数据也不是问题。 view在布局中有不同的位置,不用的id。。。

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧