Get方式请求网络数据+Fragment+SharedPreferences
2016-05-14 11:31
597 查看
<span style="font-size:18px;">第一个活动界面 public class MainActivity extends FragmentActivity { private F1 f1; private F2 f2; private F3 f3; private F4 f4; private ArrayList<Fragment> list_fragment; private FragmentManager fm; private Button bt1; private Button bt2; private Button bt3; private Button bt4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建Fragment对象 f1 = new F1(); f2 = new F2(); f3 = new F3(); f4 = new F4(); list_fragment = new ArrayList<Fragment>(); // 碎片管理器 fm = getSupportFragmentManager(); add(); // 获得控件 bt1 = (Button) findViewById(R.id.button1); bt2 = (Button) findViewById(R.id.button2); bt3 = (Button) findViewById(R.id.button3); bt4 = (Button) findViewById(R.id.button4); // 四个button按钮的点击事件 bt1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { show(f1); } }); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { show(f2); } }); bt3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { show(f3); } }); bt4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { show(f4); } }); } //添加方法 public void add() { FragmentTransaction ft = fm.beginTransaction(); // 添加与隐藏 ft.add(R.id.lin1, f1); ft.add(R.id.lin1, f2); ft.add(R.id.lin1, f3); ft.add(R.id.lin1, f4); // 添加数据 list_fragment.add(f1); list_fragment.add(f2); list_fragment.add(f3); list_fragment.add(f4); ft.hide(f2); ft.hide(f3); ft.hide(f4); ft.commit(); } // 显示方法 public void show(Fragment f) { // 事务 FragmentTransaction ft = fm.beginTransaction(); for (Fragment frag : list_fragment) { ft.hide(frag); } ft.show(f); ft.commit(); } } 第二个活动界面 </span><pre name="code" class="java"> public class TwoActivity extends Activity { private NewsInfo i; private SharedPreferences sha; private Set<String> hs; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_two); sha = getSharedPreferences("save", 0); hs = sha.getStringSet("id", new HashSet<String>()); Intent intent = getIntent(); i = (NewsInfo) intent.getSerializableExtra("info1"); // 获得控件 TextView tv1 = (TextView) findViewById(R.id.textView01); TextView tv2 = (TextView) findViewById(R.id.textView02); TextView tv3 = (TextView) findViewById(R.id.textView03); SmartImageView img = (SmartImageView) findViewById(R.id.imageView3); Button bt = (Button) findViewById(R.id.bu1); // 赋值 tv1.setText(i.title); tv3.setText(i.intro); img.setImageUrl(i.kpic); tv2.setOnClickListener(new OnClickListener() { @SuppressLint("NewApi") @Override public void onClick(View v) { Toast.makeText(TwoActivity.this, "已经收藏", 0).show(); String id = i.id; Editor ed = sha.edit(); hs.add(id); ed.putStringSet("id", hs); ed.commit(); } }); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent it = new Intent(TwoActivity.this, MainActivity.class); ArrayList<String> list = new ArrayList<String>(); for (String s : hs) { list.add(s); } it.putStringArrayListExtra("id", list); startActivity(it); } }); } }
第一个Ffragment
public class F1 extends Fragment { private ListView lv; String path = "http://api.sina.cn/sinago/list.json?channel=hdpic_story&adid=4ad30dabe134695c3d7c3a65977d7e72&from=6042095012&chwm=12050_0001&imei=867064013906290&uid=802909da86d9f5fc&p=1"; private HttpResponse httpResponse; private Myad ad; List<NewsInfo> info = new ArrayList<NewsInfo>(); private NewsInfo info1; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 加载视图 View v = inflater.inflate(R.layout.f1, null); // 获得控件 lv = (ListView) v.findViewById(R.id.listView1); // 开启线程 new Thread() { @Override public void run() { sendGet(); } }.start(); return v; } // 请求方法 public void sendGet() { HttpClient httpClient = new DefaultHttpClient(); // get方式请求 HttpGet httpGet = new HttpGet(path); try { httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity entity = httpResponse.getEntity(); String str = EntityUtils.toString(entity); Gson gson = new Gson(); Bean bean = gson.fromJson(str, Bean.class); info = bean.data.list; ArrayList<String> ids = getActivity().getIntent() .getStringArrayListExtra("id"); if (ids != null) { ArrayList<NewsInfo> temp = new ArrayList<NewsInfo>(); for (NewsInfo ni : info) { for (String id : ids) { if (ni.id.equals(id)) { temp.add(ni); } } } info = temp; } // 通过runOnUiThread方法改变主线程的控件 getActivity().runOnUiThread(new Runnable() { @Override public void run() { ad = new Myad(); lv.setAdapter(ad); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent i = new Intent(getActivity(), TwoActivity.class); info1 = info.get(position); i.putExtra("info1", info1); startActivity(i); ad.notifyDataSetChanged(); } }); } }); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 自定义适配器 class Myad extends BaseAdapter { @Override public int getCount() { // TODO Auto-generated method stub return info.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Group p; if (convertView == null) { p = new Group(); // 获得视图 convertView = View.inflate(getActivity(), R.layout.item, null); // 获得控件 p.tv1 = (TextView) convertView.findViewById(R.id.t1); p.tv2 = (TextView) convertView.findViewById(R.id.t2); p.img = (SmartImageView) convertView .findViewById(R.id.imageView); convertView.setTag(p); } else { p = (Group) convertView.getTag(); } p.tv1.setText(info.get(position).title); p.tv2.setText(info.get(position).intro); p.img.setImageUrl(info.get(position).pic); return convertView; } } class Group { TextView tv1; TextView tv2; SmartImageView img; } }
相关文章推荐
- 图论(floyd算法):NOI2007 社交网络
- HttpClient4.3版本设置超时
- java发送http的get、post请求
- TCP进入快速恢复时的窗口下降算法
- http://www.2cto.com/database/201408/327315.html
- 网络请求
- Tomcat - 设置 HTTP 摘要认证
- 网络仿真NS2之——环境配置
- cf653d Delivery Bears【二分+网络流】
- tomcat 配置https 访
- 网络流二十四题之二十四 —— 骑士共存问题(KNI)
- IdHTTPServer1 收到POST 文件和参数
- http://nianjian.xiaze.com/tags.php?/%E5%BC%80%E5%B0%81%E5%B9%B4%E9%89%B4/1/13463189106/
- 网络流二十四题之九 —— 方格取数问题(GRID)
- 怎样使用HTTP协议访问网络
- 【bzoj4538】[Hnoi2016]网络
- 驱动安装失败在PC端ADB通过TCPIP连接调试
- Http请求状态码
- Atitit.减少http请求数方案
- Atitit.减少http请求数方案