zz:初学android所必需的的知道的android新闻系统程序基本结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package  com.kwstu.palmjn;
import  java.util.List;
import  models.News;
import  myadapter.NewsListAdapter;
import  android.app.Activity;
import  android.app.ProgressDialog;
import  android.content.Intent;
import  android.os.Bundle;
import  android.os.Handler;
import  android.os.Message;
import  android.view.LayoutInflater;
import  android.view.View;
import  android.widget.AdapterView;
import  android.widget.AdapterView.OnItemClickListener;
import  android.widget.Button;
import  android.widget.ImageButton;
import  android.widget.ListView;
 
/**
  * 初学android开发经验总结,感觉对初学者很有必要
  * 初学android所必需的的知道的,开发安卓程序使用ListView等列表控件,
  * 一般使用异步加载网络数据、显示加载进度、还有加载更多、返回、ListView填充内容试图模板几个功能是必须有的,以下是程序基本框架
  * By <a href="www.kwstu.com">kwstu</a> QQ:404926765
  */
 
public  class  TestActivity extends  Activity implements  OnItemClickListener {
    private  ImageButton return_pre; // 返回首页按钮
    private  List<News> listnews; // 接受网络加载数据类
    private  ProgressDialog progressDialog; //显示加载任务进度控件
    private  NewsListAdapter adapter; //适配器,定义在这个地方可以很容易获取里面所有条目的ID,加载更多是用
    private  Button loadMoreButton; //加载更多按钮
    private  View loadMoreView; //加载更多按钮试图
    private  ListView lv; //用于显示加载数据的控件
    @Override
    public  void  onCreate(Bundle savedInstanceState) {
       super .onCreate(savedInstanceState);
       setContentView(R.layout.activity_index);
       // 程序开始加载网络数据
       progress( "加载中" , "请稍等......" );
       //更多
       LayoutInflater inflater = getLayoutInflater();
       loadMoreView = getLayoutInflater()
             .inflate(R.layout.newslearnmore, null );
       loadMoreButton = (Button) loadMoreView
             .findViewById(R.id.loadMoreButton);
       loadMoreButton.setOnClickListener( new  View.OnClickListener() {
          @Override
          public  void  onClick(View v) {
             loadMoreButton.setText( "正在加载中..." ); // 设置按钮文字
             handler.postDelayed( new  Runnable() {
                 @Override
                 public  void  run() {
 
                    loadMoreData();
 
                    adapter.notifyDataSetChanged();
 
                    loadMoreButton.setText( "查看更多..." ); // 恢复按钮文字
                 }
             }, 2000 );
          }
       });
       // 返回
       return_pre = (ImageButton) findViewById(R.id.reindex);
       return_pre.setOnClickListener( new  OnClickListener() {
          public  void  onClick(View v) {
             finish();
          }
       });
    }
 
    // 线程返回消息处理类
    Handler handler = new  Handler() {
       @Override
       public  void  handleMessage(Message msg) {
          Bundle data = null ;
          // 如果返回msg.what=100停止任务加载对话框
          if  (msg.what >= 100 ) {
             progressDialog.cancel();
          }
          switch  (msg.what) {
          case  100 :
             // 资讯默认页面加载
             break ;
          case  1 :
             break ;
          case  2 :
             break ;
          }
          // progressDialog.setProgress(msg.what);// 设置进度完成程度
          super .handleMessage(msg);
       }
    };
 
    // 初始化progressDialog
    public  void  progress(String title, String message) {
       progressDialog = new  ProgressDialog( this );
       beginThread thread = new  beginThread();
       progressDialog.setMessage(message);
       progressDialog.setTitle(title);
       progressDialog.show();
       thread.start();
    }
    // 获取视频数据
    class  beginThread extends  Thread {
       public  void  run() {
          handler.sendEmptyMessage( 0 );
          try  {
             // 从服务器上获取栏目数据
             String jsonString = "" ;
             Message message = new  Message(); // 创建消息
             Bundle data = new  Bundle(); // 创建数据
             data.putString( "jsonString" , jsonString); // 向bundle中添加数据
             message.what = 1 ; // 设置消息的what值
             message.setData(data); // 存放数据
             handler.sendMessage(message); // 发送消息
          } catch  (Exception e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
          }
       }
    };
 
    // 加载更多
    private  void  loadMoreData() {
       int  count = adapter.getCount();
       //加载更多网络数据
       for  ( int  i = 0 ; i < listnews.size(); i++) {
          adapter.addNewsItem(listnews.get(i));
       }
       if  (listnews.size() < 20 )
          lv.removeFooterView(loadMoreView);
    }
 
    // 点击ListView列表条目时执行
    @Override
    public  void  onItemClick(AdapterView<?> arg0, View arg1, int  arg2, long  arg3) {
       // TODO Auto-generated method stub
       News news = adapter.getItem(arg2);
       Intent intent = new  Intent(); // 创建Intent
       intent.setClass(TestActivity. this , NewsContent. class );
       Bundle bundle = new  Bundle(); // 创建数据Bundle
       bundle.putString( "newid" , news.getID());
       intent.putExtras(bundle); // 存放数据
       startActivity(intent); // 启动Activity
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值