ListView加载条目

来源:互联网 发布:伊朗 朝鲜 知乎 编辑:程序博客网 时间:2024/06/01 21:35
package com.bwei.lx;

import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import com.bwei.lx.bean.News;
import com.bwei.lx.bean.NewsData;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

    ListView lv;
    NewsData nd;
    List<News> list;
    MyAdapter adapter;
    int mCurrentPage=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       lv=(ListView) findViewById(R.id.lv);
       initData();
       adapter=new MyAdapter();
       lv.setAdapter(adapter);
        lv.setOnScrollListener(new OnScrollListener() {
            
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                switch (scrollState) {
                case OnScrollListener.SCROLL_STATE_IDLE:
                    if(view.getLastVisiblePosition()==list.size()-1)
                    {
                        mCurrentPage++;
                        loadMoreData();
                    }
                    break;

                default:
                    break;
                }
                
            }
            
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub
                
            }
        });
        
    }
    private void initData() {
        list=new ArrayList<News>();
        loadMoreData();
        
    }
    private void loadMoreData() {
        new AsyncTask<String, String, NewsData>() {

            @Override
            protected NewsData doInBackground(String... params) {
                getData();
                 ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(MainActivity.this);
                    ImageLoader.getInstance().init(configuration);
                
                return null;
            }

            private void getData() {
                try {
                URL url=new URL("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+mCurrentPage);
                HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                int code=connection.getResponseCode();
                if(code==200)
                {
                    Gson gson=new Gson();
                    nd=gson.fromJson(new InputStreamReader(connection.getInputStream(),"GBK"), NewsData.class);
                    list.addAll(nd.getNewslist());
                }
                    
                } catch (Exception e) {
                    e.printStackTrace();
                }
                
            }

            @Override
            protected void onPostExecute(NewsData result) {
                adapter.notifyDataSetChanged();
                super.onPostExecute(result);
            }
            
        }.execute();
        
    }
    class MyAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.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) {
            ViewHolder holder;
            if(convertView==null)
            {
                convertView=View.inflate(MainActivity.this, R.layout.item, null);
                holder=new ViewHolder();
                holder.tv_title=(TextView) convertView.findViewById(R.id.tv_title);
                holder.tv_desc = (TextView) convertView.findViewById(R.id.tv_desc);
                holder.tv_time = (TextView) convertView.findViewById(R.id.tv_time);
                holder.iv = (ImageView) convertView.findViewById(R.id.iv);
                convertView.setTag(holder);
                
            }
            else {
                holder=(ViewHolder) convertView.getTag();
            }
            holder.tv_title.setText(list.get(position).getTitle());
            holder.tv_desc.setText(list.get(position).getDescription());
            holder.tv_time.setText(list.get(position).getCtime());
            ImageLoader.getInstance().displayImage(list.get(position).getPicUrl(), holder.iv);
            return convertView;
        }
        class ViewHolder{
            TextView tv_title,tv_desc,tv_time;
            ImageView iv;
        }
        
    }
    
}