万能适配器----结合知识点CheckBox一起使用

来源:互联网 发布:诛仙手游有炼器软件吗 编辑:程序博客网 时间:2024/05/16 08:46

像我这只懒惰的程序猿,喜欢直接用一样完整的工具。

这次就不详细讲解了(任务有点多),我直接复制代码给大家看了。

主要思路是这样的:

/**
 * 使用万能适配器的思路:
 * 
 *                    继承
 * 万能适配器<------------------------外部适配器<---------------------具体的页面调用外部适配器实现
 * UniversalAdapter.java<----ExtendsFromUniversal.java<----TestActivity.java+Person.java
 * 
 * */

1、UniversalAdapter.java中:

import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
/**
 * 使用万能适配器的思路:
 * 
 *                    继承
 * 万能适配器<------------------------外部适配器<---------------------具体的页面调用外部适配器实现
 * UniversalAdapter.java<----ExtendsFromUniversal.java<----TestActivity.java+Person.java
 * 
 * */
public abstract class UniversalAdapter<T> extends BaseAdapter{//万能适配器
public List<T> list;
public LayoutInflater inflater;
public UniversalAdapter(Context context){
inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
@Override
public int getCount() {
// TODO item的个数
return list.size();
}
@Override
public Object getItem(int position) {
// TODO 需手动操作
return null;
}
@Override
public long getItemId(int position) {
// TODO 需手动操作
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO 设置视图
return getItemView(position, convertView, parent);
}
//TODO 定义一个抽象的方法
public abstract View getItemView(int position, View convertView, ViewGroup parent);
}

2、ExtendsFromUniversal.java中:

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;


public class ExtendsFromUniversal extends UniversalAdapter<Person>{//继承万能适配器
public ExtendsFromUniversal(Context context) {
super(context);
}
@Override
public View getItemView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder vholder=null;
if(convertView==null){
convertView=inflater.inflate(R.layout.test_item, null);
vholder=new ViewHolder(convertView);
convertView.setTag(vholder);
}else{
vholder=(ViewHolder) convertView.getTag();
}
final Person per=list.get(position);
vholder.checkbox.setText(per.getName());
vholder.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
per.setChecked(isChecked);
}
});
vholder.checkbox.setChecked(per.isChecked());
return convertView;
}
class ViewHolder{
CheckBox checkbox;
public ViewHolder(View view){
checkbox=(CheckBox) view.findViewById(R.id.cb_item);
}
}
}

3、TestActivity.java中:

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;


public class TestActivity extends Activity {
ListView lv;
List<Person> list=new ArrayList<Person>();
//MyAdapter<Person> ma;
ExtendsFromUniversal efu;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test_activity);
lv=(ListView) findViewById(R.id.lv);
for (int i = 0; i < 30; i++) {
list.add(new Person("数据"+i));
}
//ma=new MyAdapter<Person>(this);
//ma.setList(list);
//lv.setAdapter(ma);
efu=new ExtendsFromUniversal(this);
efu.setList(list);
lv.setAdapter(efu);

}
}

4、Person.java中:

public class Person {
private String name;
private boolean isChecked;
public Person(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
}

}

如果读者看到这里还不懂的话,我后期后空会重新编辑的,真的是不好意思了。

0 0
原创粉丝点击