常用适配器
Spinner spinner=(Spinner) findViewById(R.id.spinner);
AutoCompleteTextView autoCompleteTextView=(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
//添加数据
String[] cities={"北京","上海","广州"};
***ArrayAdapter***<String> ad=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, android.R.id.text1,cities);
spinner.setAdapter(ad);
***SimpleAdapter*** simpleAdapter=new SimpleAdapter(getApplicationContext(), list, R.layout.list_item, new String[]{}, new int[]{R.id.text1,R.id.text2,R.id.spinner,R.id.autoTextView});
View[] arr={spinner,autoCompleteTextView};
ArrayAdapter<CharSequence> ad1=new ArrayAdapter<CharSequence>(getApplicationContext(), android.R.layout.simple_list_item_multiple_choice, arr);
ArrayAdapter<CharSequence> adapter2=ArrayAdapter.createFromResource(getApplicationContext(), R.array.name,android.R.layout.simple_dropdown_item_1line);
在这里使用了继承baseAdapter的适配器
public class ListActivity extends Activity implements OnScrollListener{
ArrayList<News> listString=null;
MyListViewAdapter myAdapter=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//模拟加载数据
listString=new ArrayList<News>();
initData();
ListView listView=(ListView) findViewById(R.id.myListView);
//在listView底部添加数据加载提示
View view=getLayoutInflater().inflate(R.layout.listview_foot, null);
listView.addFooterView(view);
myAdapter=new MyListViewAdapter();
listView.setAdapter(myAdapter);
listView.setOnScrollListener(this);
}
private class MyListViewAdapter extends BaseAdapter {
final int VIEW_TYPE = 3;
final int TYPE_1 = 0;
final int TYPE_2 = 1;
final int TYPE_3 = 2;
public void setData(){
initData();
Log.e("setData=", "YES");
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listString.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return listString.get(arg0);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
/*
* 每个convert view都会调用此方法,获得当前所需要的view样式
* @see android.widget.BaseAdapter#getItemViewType(int)
*/
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
if(position%VIEW_TYPE==0){
return TYPE_1;
}
else if(position%VIEW_TYPE==1){
return TYPE_2;
}
else{
return TYPE_3;
}
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return VIEW_TYPE;
}
@SuppressLint("ResourceAsColor") @Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = getLayoutInflater();
ViewHolder1 viewHolder1=null;
ViewHolder2 viewHolder2=null;
ViewHolder3 viewHolder3=null;
int type=getItemViewType(position);
if(convertView==null){
Log.e("ConvertView=", "NULL");
//按当前所需的样式,确定当前行的布局
switch(type)
{
case TYPE_1:
convertView=inflater.inflate(R.layout.list1, parent, false);
viewHolder1=new ViewHolder1();
viewHolder1.textView= (TextView) convertView.findViewById(R.id.text3);
viewHolder1.bt=(Button) convertView.findViewById(R.id.bt);
convertView.setTag(viewHolder1);
break;
case TYPE_2:
convertView=inflater.inflate(R.layout.list2, parent, false);
viewHolder2=new ViewHolder2();
viewHolder2.textView1 = (TextView) convertView.findViewById(R.id.text4);
viewHolder2.textView2 = (TextView) convertView.findViewById(R.id.text5);
convertView.setTag(viewHolder2);
break;
case TYPE_3:
convertView=inflater.inflate(R.layout.list3, parent, false);
viewHolder3=new ViewHolder3();
viewHolder3.bt1=(Button) convertView.findViewById(R.id.bt1);
viewHolder3.bt2=(Button) convertView.findViewById(R.id.bt2);
convertView.setTag(viewHolder3);
break;
}
}else{
switch(type)
{
case TYPE_1:
viewHolder1=(ViewHolder1) convertView.getTag();
break;
case TYPE_2:
viewHolder2=(ViewHolder2) convertView.getTag();
break;
case TYPE_3:
viewHolder3=(ViewHolder3) convertView.getTag();
break;
}
}
//设置资源
switch(type)
{
case TYPE_1:
viewHolder1.textView.setText(listString.get(position).getTitle()+"-内容-");
viewHolder1.bt.setText(listString.get(position).getContent()+"-查看-");
break;
case TYPE_2:
viewHolder2.textView1.setText(listString.get(position).getTitle()+"-内容-");
viewHolder2.textView2.setText(listString.get(position).getContent()+"-查看-");
break;
case TYPE_3:
viewHolder3.bt1.setText(listString.get(position).getTitle()+"-查看-");
viewHolder3.bt1.setBackgroundColor(android.R.color.holo_blue_light);
viewHolder3.bt2.setText(listString.get(position).getContent()+"-查看-");
viewHolder3.bt2.setBackgroundColor(android.R.color.holo_green_light);
break;
}
return convertView;
}
}
private static class ViewHolder1{
TextView textView=null;
Button bt=null;
}
private static class ViewHolder2{
TextView textView1=null;
TextView textView2=null;
}
private static class ViewHolder3{
Button bt1=null;
Button bt2=null;
}
/*
* 列表滚动状态监听
*/
int currentTotal=0;
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
currentTotal=firstVisibleItem + visibleItemCount - 1;
}
@Override
public void onScrollStateChanged(AbsListView arg0, int scrollState) {
// TODO Auto-generated method stub
if(scrollState == OnScrollListener.SCROLL_STATE_IDLE && currentTotal==myAdapter.getCount()){
new MyThread().start();
}
}
private class MyThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
try {
Thread.sleep(3000);
handler.sendEmptyMessage(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 主线程跟非主线程通信
*/
private Handler handler=new Handler(){
public void handleMessage(Message msg){
int key=msg.what;
switch(key)
{
case 200:
myAdapter.setData();
myAdapter.notifyDataSetChanged();
break;
default:
break;
}
}
};
public void initData() {
int len=listString.size();
for (int i = len,j=0; j<15; j++,i++) {
listString.add(new News("title:["+Integer.toString(i)+"]","content"));
}
}
}