JAVA代碼:
public class MainActivity extends Activity {
private ListView lv;
private MyasnyTast myasnyTast;//異步任務
private HttpURLConnection connection;//網絡請求方式
private BitmapUtils bitmap;
private ArrayList<Data_list>list=new ArrayList<Data_list>( );
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.lv);
//執行個體化MyasnyTast類task隻能被執行一次,否則多次調用時将會出現異常;
myasnyTast=new MyasnyTast();
myasnyTast.execute("http://api.sina.cn/sinago/list.json?channel=hdpic_story&adid=4ad30dabe134695c3d7c3a65977d7e72&from=6042095012&chwm=12050_0001&imei=867064013906290&uid=802909da86d9f5fc&p=1");
//listview 監聽跳轉
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
System.out.println(list.toString());
//傳遞網絡請求資料
Intent it=new Intent(MainActivity.this, SencondActivity.class);
it.putExtra("list", (Serializable)list);
it.putExtra("getposition", position);
startActivity(it);
}
});
}
//異步任務AsyncTask定義了三種泛型類型 Params,Progress和Result。
class MyasnyTast extends AsyncTask<String, String, String>{
// 得到的結果處理操作
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Gson gson=new Gson();
Person p=gson.fromJson(result , Person.class);
list=p.getData().getList();
//擴充卡
Myadapter myadapter=new Myadapter();
lv.setAdapter(myadapter);
}
//耗時操作 背景執行,比較耗時的操作都可以放在這裡
protected String doInBackground(String... params) {
// 定義一個buff
StringBuffer buffer=new StringBuffer();
try {
URL url=new URL(params[0]);
//得到連接配接
connection=(HttpURLConnection) url.openConnection();
connection.setReadTimeout(10*1000);
//定義輸出流,得到資料
if(connection.getResponseCode()==200){
InputStream is=connection.getInputStream();
//讀取資料
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(is));
//定義字元串接受資訊
String str="";
while ( (str=bufferedReader.readLine())!=null) {
buffer.append(str);
}
System.out.println(buffer.toString());
//關閉流
is.close();
bufferedReader.close();
//關閉網絡請求
connection.disconnect();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return buffer.toString();
}
}
class Myadapter extends BaseAdapter{
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHoder h=null;
if(convertView==null){
h=new ViewHoder();
convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.data_items, null);
h.tv1=(TextView) convertView.findViewById(R.id.textView1);
h.tv2=(TextView) convertView.findViewById(R.id.textView2);
h.image =(ImageView) convertView.findViewById(R.id.imageView1);
convertView.setTag(h);
}else{
h=(ViewHoder) convertView.getTag();
}
h.tv1.setText("id:"+list.get(position).getId());
h.tv2.setText("标題"+list.get(position).getTitle());
BitmapUtils bitmap=new BitmapUtils(MainActivity.this);
bitmap.display(h.image, list.get(position).getPic());
return convertView;
}
class ViewHoder{
TextView tv1,tv2;
ImageView image;
}
}
}
2,建立資料庫,添加到資料庫中
public class Myopenheper extends SQLiteOpenHelper{
public Myopenheper(Context context, String name, CursorFactory factory,
int version) {
super(context, "1405ab", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
//建立資料庫
db.execSQL("create table news (_id integer primary key autoincrement ,id varchar(20)," +
"title varchar(29),pic varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
3,第二個頁面
public class SencondActivity extends Activity{
private TextView tv1,tv2;
private ImageView image;
private int getposition;
private Button button ,button2;
private Myopenheper myhelper;
private SQLiteDatabase db;
private ArrayList<Data_list>sen_list=new ArrayList<Data_list>( );
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sencond_items);
tv2=(TextView) findViewById(R.id.textView2);
tv1=(TextView) findViewById(R.id.textView1);
image=(ImageView) findViewById(R.id.imageView1);
button = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
//資訊清單展示資料庫資訊
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent it3=new Intent(SencondActivity.this, ThreeActivity.class);
startActivity(it3);
}
});
//收藏監聽
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
String id=sen_list.get(getposition).getId();
String title=sen_list.get(getposition).getTitle();
String pic=sen_list.get(getposition).getPic();
//向資料庫中添加資料
db.execSQL("insert into news values(null,?,?,?)", new Object[]{id,title,pic});
}
});
Intent it=getIntent();
sen_list=(ArrayList<Data_list>) it.getSerializableExtra("list");
getposition=it.getIntExtra("position", 0);
//建立資料庫表
myhelper=new Myopenheper(SencondActivity.this, "1405ab", null, 1);
db=myhelper.getReadableDatabase();
//判斷控件資料值大于5個字元以 ......代替
if(sen_list.get(getposition).getTitle().length()>5){
String str=sen_list.get(getposition).getTitle().substring(0,5);
String str2=sen_list.get(getposition).getId().substring(0,5);
tv2.setText(str+"......");
tv1.setText(str2);
}
//加載網絡圖檔
BitmapUtils bitmapUtils=new BitmapUtils(SencondActivity.this);
bitmapUtils.display(image, sen_list.get(getposition).getPic());
}
}
4.資料庫查詢,展示資訊清單
//1,從資料中查詢收藏的資料,并用listview展示
public class ThreeActivity extends Activity{
private ListView lv2;
Myopenheper myhelper;
SQLiteDatabase db;
Data_list da ;
BitmapUtils bitmapUtils;
private ArrayList<Data_list>three_list=new ArrayList<Data_list>( );
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
lv2=(ListView) findViewById(R.id.lv2);
MythreeAdapter adapter=new MythreeAdapter();
lv2.setAdapter(adapter);
myhelper=new Myopenheper(ThreeActivity.this, "1405ab", null, 1);
db=myhelper.getReadableDatabase();
//查詢資料庫
Cursor cursor=db.rawQuery("select * from news", null);
while (cursor.moveToNext()) {
String id=cursor.getString(cursor.getColumnIndex("id"));
String title=cursor.getString(cursor.getColumnIndex("title"));
String pic=cursor.getString(cursor.getColumnIndex("pic"));
da=new Data_list(id, title, pic);
three_list.add(da);
}
}
class MythreeAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return three_list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return three_list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHodler h=null;
if(convertView==null){
h=new ViewHodler();
convertView=LayoutInflater.from(ThreeActivity.this).inflate(R.layout.three_items,null);
h.three_tv1=(TextView) convertView.findViewById(R.id.textView1);
h.three_tv2=(TextView) convertView.findViewById(R.id.textView2);
h.image=(ImageView) convertView.findViewById(R.id.imageView1);
convertView.setTag(h);
}else{
h=(ViewHodler) convertView.getTag();
}
h.three_tv1.setText(three_list.get(position).getId());
h.three_tv2.setText(three_list.get(position).getTitle());
BitmapUtils bitmapUtils=new BitmapUtils(ThreeActivity.this);
bitmapUtils.display(h.image, three_list.get(position).getPic());
return convertView;
}
class ViewHodler{
TextView three_tv1,three_tv2;
ImageView image;
}
}
}