动态在listView的item显示数据,数据都是从后台获取的

Willem_wl 2016-06-18 12:07:21
我有一个ListView,数据都是从后台获取过来显示在item 上的。现在做一个弹窗的activity,是多选单选的这样的,选择完之后数据会显示在listview的item上。进行动态显示。用的BaseAdapter写的但是数据一直回调不过来。没办法更新一更新就报错。
我用的逻辑是这样的:首先ListView 需要进行网络请求显示数据,把数据放在dongtai里进行显示。然后点击单选或多选时候跳到窗口类的activity中。通过Intent回调数据,数据回调到原来的activity中显示数据。问题就出在这,回调回来的数据怎么弄都不显示在listview中,。求指教、
...全文
683 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Willem_wl 2016-06-21
  • 打赏
  • 举报
回复
多选那个代码,回调回去的数据不显示在原来的item上,而是增加了一行,,,该怎么弄。。
Willem_wl 2016-06-21
  • 打赏
  • 举报
回复
看一下单选的代码,只贴了一部分。把数据回调回去,这部分成功了:

  li = (ListView) findViewById(R.id.popu_list);
		    adpter=new SimpleAdapter(SingleRadioPopup.this, data, R.layout.thirdlevelpopup_radio_list__item, key, v);
		    li.setAdapter(adpter);
		    
		    //item的点击事件
		    li.setOnItemClickListener(new OnItemClickListener(){	    	
				public void onItemClick(AdapterView<?> arg0, View pConvertView,int position, long arg3) {				
					//点击item后单选按钮改变图片
					 ChangeRadioImg(balanceIndex,false);  
		             ChangeRadioImg(position,true);  
		             balanceIndex=position;  	             
		             //点击item所对应的内容id
		             String check_id = (String) data.get(position).get("id"); 
		             String check_name = (String) data.get(position).get("name");                  
		             //判断是谁点击的
		   //          if(db.getText().equals("二级分类")){ 	            	
		            		 //----------------用intent返回数据-----	            		 
		            		 Bundle bundle = intent.getExtras();
		            		 bundle.putString("check_id", check_id);//添加要返回给页面的数据
		            		 bundle.putString("check_name", check_name);
		            		 bundle.putInt("position", position);
		            		 intent.putExtras(bundle);
		            		 SingleRadioPopup.this.setResult(Activity.RESULT_OK, intent);//返回页面
		            		 finish();	         
回调回到activity的代码。主要就是这部分的问题。不知道怎么搞!

	case 0:
				
				  check_id=data.getStringExtra("check_id");
	              check_name = data.getStringExtra("check_name");
	              String attributeid = data.getStringExtra("attribute_name_id");
	              System.out.println("--------回调成功----------"+check_id+check_name+attributeid);
	              DongTai dongtai=new DongTai();
	              dongtai.setFanhuiname(check_name);
	              dongtai.setFanhuiid(check_id);
	              dongtaiList.add(dongtai);
	              
	              adapter.notifyDataSetChanged();
	              DongtaiAdapter ad=new DongtaiAdapter(activity, dongtaiList);
	              
	              ad.add(dongtaiList);
	              mListView.setAdapter(ad);
	             // ad.getItem(Integer.valueOf(attributeid)).notify();
                  ad.notifyDataSetChanged();
	            
				break;
			case 2:
		            ArrayList<String> list_check_id = data.getStringArrayListExtra("check_id");
		            ArrayList<String> list_check_name = data.getStringArrayListExtra("check_name");
		            ArrayList<Integer> postposition =data.getIntegerArrayListExtra("position");
		            System.out.println("--------多选回调1----------"+list_check_name+list_check_id+postposition);
		            if(list_check_id.size()>0){//返回的值不为空
		            	
		          //  	 String id = service_region_id(list_check_id);
		          //  	 rd.setService_region(id);//在ReceiveData中赋值       
		            	 dt.setPosition(postposition);
//		            	 dt.setList_check_id(list_check_id);
//		            	 dt.setList_check_name(list_check_name);
		            	 DongtaiAdapter adap=new DongtaiAdapter(getActivity(), dongtaiList);
		   
		        
		           	  if(list_check_id.size()==1){//如果区域选择只选了一个
//		           		 choice_footview.setText(list_check_name.get(0));
		           		 dt.setFanhuiname(list_check_name.get(0));
		           		
		          // 	 Toast.makeText(PhotographyPopup.this,"选择:"+list_check_name.get(0),Toast.LENGTH_LONG).show();
		           	  }else if(list_check_id.size()==2){
//		           		choice_footview.setText(list_check_name.get(0)+","+list_check_name.get(1));
		           	 dt.setFanhuiname(list_check_name.get(0)+","+list_check_name.get(1));
		           		  
		           	  }else{//如果区域选择选了多个
//		           		choice_footview.setText(list_check_name.get(0)+","+list_check_name.get(1)+"...");
		           	 dt.setFanhuiname(list_check_name.get(0)+","+list_check_name.get(1)+"...");
		           	  }
		           	dongtaiList.add(dt);
		           	  System.out.println("--------多选回调2----------"+list_check_name.get(0));
		           	   adap.add(dongtaiList);
		            	mListView.setAdapter(adap);
		       //     	Untilty.setListViewHeightBasedOnChildren(mListView);
		           //	  dongtaia.setFanhuiname(dt.getFanhuiname().toString());
		           	  adap.notifyDataSetChanged();       
                      
		            } 
		            break;
请各位帮帮忙吧。困了好几天了。。。。
Willem_wl 2016-06-21
  • 打赏
  • 举报
回复
好的,我粘贴下代码哈,第一次发这个。
首先先从后台获取数据显示到listview中
		mListView.setVisibility(View.VISIBLE);


ArrayList<DongTai> list = new ArrayList<DongTai>();
list.clear();

if (dongtaiList != null && dongtaiList.size() > 0) {
list = dongtaiList;
}
adapter = new DongtaiAdapter(activity, list);

mListView.setAdapter(adapter);
Untilty.setListViewHeightBasedOnChildren(mListView);

是这样的
然后通过单选或者多选,进行选择listview里的数据数据。全部都是从后台获取的
@Override
public void onItemClick(AdapterView<?> arg0, View view, int p,long arg3) {
// TODO Auto-generated method stub
DongTai ent = (DongTai) adapter.getItem(p);
TextView tv_jibie =(TextView) view.findViewById(R.id.tv_jibie);
TextView tv_buxian =(TextView) view.findViewById(R.id.tv_buxian);
TextView name=(TextView) view.findViewById(R.id.tv_name_id);
TextView choice=(TextView) view.findViewById(R.id.tv_choice_id);

String text =tv_jibie.getText().toString();

//所点item的 属性id和选择id
name_id = name.getText().toString();
choice_id_checkbox = choice.getText().toString();
dt.setText(text);

int type=Integer.valueOf(ent.getProperty_input_type());
JSONArray aa = san.get(p);
ArrayList<Map<String, Object>> content = new ArrayList<Map<String,Object>>();
for(int a = 0; a < aa.size(); a++){
try {
String id_content = aa.getJSONObject(a).getString("value_id");
String name_content = aa.getJSONObject(a).getString("value_name");
Map<String,Object> map=new HashMap<String,Object>();
map.put("name", name_content);
map.put("id_region", id_content);
content.add(map);
} catch (Exception e) {
e.printStackTrace();
}
}
dt.setData(content);
if(ent.getProperty_name().equals("头车品牌")){
Intent in=new Intent();
in.setClass(getActivity(),ToucheActivity.class);
Bundle bun=new Bundle();
bun.putSerializable("db2",dt);
bun.putSerializable("rd", rd);
bun.putSerializable("name",ent.getProperty_name());
bun.putSerializable("attribute_name_id",name_id);
in.putExtras(bun);
startActivityForResult(in,10);
}
//多选
if(type==2){
Intent in = new Intent();
in.setClass(this.activity,SingleCheckBoxPopup.class);
Bundle bun = new Bundle();
bun.putSerializable("db2",dt);
bun.putSerializable("attribute_name_id_checkbox",name_id);
bun.putSerializable("rd", rd);
bun.putSerializable("name",ent.getProperty_name());
in.putExtras(bun);
startActivityForResult(in, 2);
}
//单选
if(type==1){

Intent in = new Intent();
in.setClass(this.activity,SingleRadioPopup.class);
Bundle bun = new Bundle();
bun.putSerializable("db2",dt);
bun.putSerializable("name",ent.getProperty_name());
bun.putSerializable("rd", rd);
in.putExtras(bun);
startActivityForResult(in, 0);
}
//手填
if(type==3){

}

}
蒲锦_up 2016-06-20
  • 打赏
  • 举报
回复
没代码和日志 说啥
会有那一天 2016-06-20
  • 打赏
  • 举报
回复
理论上只要更新一下数据 但是我们不知道你下载后的数据是放到那里所以不好回答
Gkery 2016-06-20
  • 打赏
  • 举报
回复
notify试一下
山鹰1985 2016-06-20
  • 打赏
  • 举报
回复
引用 楼主 qq_28745317 的回复:
我有一个ListView,数据都是从后台获取过来显示在item 上的。现在做一个弹窗的activity,是多选单选的这样的,选择完之后数据会显示在listview的item上。进行动态显示。用的BaseAdapter写的但是数据一直回调不过来。没办法更新一更新就报错。 我用的逻辑是这样的:首先ListView 需要进行网络请求显示数据,把数据放在dongtai里进行显示。然后点击单选或多选时候跳到窗口类的activity中。通过Intent回调数据,数据回调到原来的activity中显示数据。问题就出在这,回调回来的数据怎么弄都不显示在listview中,。求指教、
为什么要用弹窗Activity?来回传数据好玩吗? 直接用 Dialog办不到吗? 还有你是在哪个Activity中请求的数据? 解决思路: 在 ListView的Activity中 请求数据, 然后触发 Dialog 显示数据,然后点选 Dialog后,再刷新 ListView.很简单啊.一个自定义的Dialog 就可以搞定了.
IT行业学习者 2016-06-19
  • 打赏
  • 举报
回复
粘贴一下关键的代码
bdmh 2016-06-18
  • 打赏
  • 举报
回复
你先弄清楚错误信息是啥,对照着找问题,是空引用,还是越界,看清楚

80,471

社区成员

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

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