英语学习资料
2012-08-17 20:59
375 查看
package com.sagaware.process.list;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
/**
* ListView每行都 显示一个process dialog
* @author lyl
*
* 代码简单,就不书写备注了。
*/
public class ProcessBarListActivity extends ListActivity {
private ListView mView = null;
private SimpleAdapter mAdapter = null;
private Map<Integer, Integer> map = new HashMap<Integer, Integer>();
private MyView view;
Handler handler = new Handler(){
public void handleMessage(Message msg) {
mAdapter.notifyDataSetChanged();
};
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<Map<String, Object>> data = getData();
mView = getListView();
mAdapter = new MyAdapter(this, data, R.layout.main, new String[] { "name" }, new int[] { R.id.name });
mView.setAdapter(mAdapter);
}
private List<Map<String, Object>> getData() {
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
for (int i = 1; i <= 30; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", i + "");
dataList.add(map);
}
return dataList;
}
private class MyAdapter extends SimpleAdapter {
private Context context;
private int resource;
public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
this.context = context;
this.resource = resource;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
view = new MyView();
convertView = LayoutInflater.from(context).inflate(resource, parent, false);
convertView.setTag(view);
} else {
view = (MyView) convertView.getTag();
}
int process = map.get(position) == null ? 0 : map.get(position);
view.bar = (ProgressBar) convertView.findViewById(R.id.bar);
view.bar.setProgress(process);
view.textView = (TextView) convertView.findViewById(R.id.percent);
view.textView.setText(process + "%");
view.button = (Button) convertView.findViewById(R.id.but);
view.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(map != null && map.get(position) == null){
new Thread(){
public void run(){
for(int i = 1; i <= 100; i++){
map.put(position, i);
Message message = new Message();
message.getData().putInt("position", position);
handler.sendMessage(message);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
});
return convertView;
}
}
static class MyView {
ProgressBar bar ;
TextView textView ;
Button button ;
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
/**
* ListView每行都 显示一个process dialog
* @author lyl
*
* 代码简单,就不书写备注了。
*/
public class ProcessBarListActivity extends ListActivity {
private ListView mView = null;
private SimpleAdapter mAdapter = null;
private Map<Integer, Integer> map = new HashMap<Integer, Integer>();
private MyView view;
Handler handler = new Handler(){
public void handleMessage(Message msg) {
mAdapter.notifyDataSetChanged();
};
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<Map<String, Object>> data = getData();
mView = getListView();
mAdapter = new MyAdapter(this, data, R.layout.main, new String[] { "name" }, new int[] { R.id.name });
mView.setAdapter(mAdapter);
}
private List<Map<String, Object>> getData() {
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
for (int i = 1; i <= 30; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", i + "");
dataList.add(map);
}
return dataList;
}
private class MyAdapter extends SimpleAdapter {
private Context context;
private int resource;
public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
this.context = context;
this.resource = resource;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
view = new MyView();
convertView = LayoutInflater.from(context).inflate(resource, parent, false);
convertView.setTag(view);
} else {
view = (MyView) convertView.getTag();
}
int process = map.get(position) == null ? 0 : map.get(position);
view.bar = (ProgressBar) convertView.findViewById(R.id.bar);
view.bar.setProgress(process);
view.textView = (TextView) convertView.findViewById(R.id.percent);
view.textView.setText(process + "%");
view.button = (Button) convertView.findViewById(R.id.but);
view.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(map != null && map.get(position) == null){
new Thread(){
public void run(){
for(int i = 1; i <= 100; i++){
map.put(position, i);
Message message = new Message();
message.getData().putInt("position", position);
handler.sendMessage(message);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
});
return convertView;
}
}
static class MyView {
ProgressBar bar ;
TextView textView ;
Button button ;
}
}