Android小白一枚,以后要养成记录学习的习惯,记录才能标志进度,督促我学习,哈哈
1、首先建立xml文件,放一个listview控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/aliceblue"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="45dp"
android:background="@drawable/title_bar" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="记录查询"
android:textColor="#ffffff"
android:textSize="17sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/add_record_button"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_centerHorizontal="true"
android:layout_marginRight="15dp"
android:onClick="addRecord"
android:src="@drawable/add_record" />
</RelativeLayout>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#0000"
android:divider="@color/lightgray"
android:dividerHeight="1dp"
android:scrollbarStyle="outsideOverlay"
android:background="@color/white"
android:stackFromBottom="false" />
</LinearLayout>
2、新建一个Adapter,getview根据list长度循环创建view对象
inflater.inflate(R.layout.single_record, null);//从layout文件中加载view对象
package com.shao.Adapter;
import java.util.List;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.shao.Bean.RecordBean;
import com.shao.record.R;
public class RecordAdapter extends BaseAdapter {
private List<RecordBean> collEntities;
private LayoutInflater inflater;
private Context context;
public RecordAdapter(Context context, List<RecordBean> coll) {
this.context = context;
this.collEntities = coll;
inflater = LayoutInflater.from(this.context);
}
<pre name="code" class="java"><span style="white-space:pre"> </span>//返回listview中绑定的lsit长度
@Overridepublic int getCount() {// TODO Auto-generated method stubreturn collEntities.size();}@Overridepublic Object getItem(int position) { //返回list在该位置对象// TODO Auto-generated method stubreturn collEntities.get(position);}@Overridepublic long getItemId(int position) { //其中的参数是被点击的listview item的id// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
//必须实现这个接口,获取每一个item的view// TODO Auto-generated method stubRecordBean recordEntity = collEntities.get(position);ViewHoder viewHoder = null;if (convertView == null) {convertView = inflater.inflate(R.layout.single_record, null);viewHoder = new ViewHoder();viewHoder.titleTextView = (TextView) convertView.findViewById(R.id.listview_title);viewHoder.dateTextView = (TextView) convertView.findViewById(R.id.listview_datetime);viewHoder.costTextView = (TextView) convertView.findViewById(R.id.listview_cost);viewHoder.costtypeImageView = (ImageView) convertView.findViewById(R.id.listview_img);convertView.setTag(viewHoder);} else {viewHoder = (ViewHoder) convertView.getTag();}// 0住宿,1餐饮,2交通,其他购物viewHoder.titleTextView.setText(recordEntity.getTitleString());viewHoder.dateTextView.setText(recordEntity.getDateString());if (recordEntity.getCostString().startsWith("-")) {viewHoder.costTextView.setTextColor(Color.BLUE);viewHoder.costTextView.setText(recordEntity.getCostString());} else {viewHoder.costTextView.setTextColor(Color.RED);viewHoder.costTextView.setText("+" + recordEntity.getCostString());}if (collEntities.get(position).getCosttype() == 1) {viewHoder.costtypeImageView.setImageResource(R.drawable.hotel);} else if (collEntities.get(position).getCosttype() == 2) {viewHoder.costtypeImageView.setImageResource(R.drawable.food);} else if (collEntities.get(position).getCosttype() == 3) {viewHoder.costtypeImageView.setImageResource(R.drawable.commut);} else {viewHoder.costtypeImageView.setImageResource(R.drawable.shopping);}return convertView;}static class ViewHoder { //使用viewholder内部静态类有效节约创建的资源消耗public TextView titleTextView;public TextView dateTextView;public TextView costTextView;public ImageView costtypeImageView;}}
package com.shao.Activity;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.shao.Adapter.RecordAdapter;
import com.shao.Bean.RecordBean;
import com.shao.record.R;
import com.shao.transfer.transfer;
public class ViewActivity extends Activity implements OnItemClickListener {
ResultSet rs = null;
private ListView listView;
private RecordAdapter recordAdapter;
private List<RecordBean> recordEntities = new ArrayList<RecordBean>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
// 启动时不自动启用软键盘
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
listView = (ListView) findViewById(R.id.listview);
// InitTestData()
listView.setOnItemClickListener(this);
}
@Override
protected void onResume() {
super.onResume();
InitTestData();
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
recordAdapter.notifyDataSetChanged();
break;
}
}
};
public void InitTestData() {
recordAdapter = new RecordAdapter(this, recordEntities);
listView.setAdapter(recordAdapter); //绑定adapter
// 新线程获取消息
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
recordEntities.clear();
List<RecordBean> list = new ArrayList<RecordBean>();
list = new transfer().getRecords(); //这个是联网获取list对象,具体实现不在此详细解释了
for (int i = 0; i < list.size(); i++) {
recordEntities.add(list.get(i)); //Android规定联网等耗时操作不能再UI线程中进行,必须新开线程
}
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
}
}).start();
}
public void addRecord(View v) {
Intent intent = new Intent();
intent.setClass(this, AddRecordActivity.class);
startActivity(intent);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
// Toast.makeText(this, arg2+"\r\n"+arg3, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(ViewActivity.this, SeeDetail.class);
intent.putExtra("data", recordEntities.get(arg2).getId() + "");
startActivity(intent);
}
}