android-adapter小结

来源:互联网 发布:json返回html标签 编辑:程序博客网 时间:2024/06/06 10:04

adapter即适配器,功能就是把数据加载到界面上,通常是加载到listview上

例如:网易新闻列表,如下图


案例一:显示文字

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" ></LinearLayout>
MainActivity.java

public class MainActivity extends Activity {
private static final String TAG = "MYDAPTER";
private ListView lv;

private List<String> data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        LinearLayout ll_root = (LinearLayout) findViewById(R.id.ll_root);
        lv = (ListView) findViewById(R.id.lv);        
        

data = new ArrayList<String>();

for(int i = 0; i < 50; i++){

data.add("第" + i + "个view");

}
    }


    private class MyAdapter extends BaseAdapter{  


/**
    * 控制listview里面总共有多少个条目
    */
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}


@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}


@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
Log.i(TAG, "返回VIEW对象,位置:" + position);
TextView tv = new TextView(getApplicationContext());
tv.setTextSize(20);
tv.setTextColor(Color.BLACK);

String info= data.get(position);
tv.setText(info);
return tv;


}
   
    }
}


案例二:组合view,SimpleAdapter使用

实现效果:



activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >


    <ListView 
        android:id="@+id/lv"
        android:layout_width="match_parent"
    android:layout_height="match_parent"
        ></ListView>


</RelativeLayout>


list_item.xml


<?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="wrap_content"
    android:orientation="horizontal" >
    
<ImageView 
   android:id="@+id/iv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>
<TextView 
   android:id="@+id/tv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>
</LinearLayout>


MainActivity.java


public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ListView lv = (ListView) findViewById(R.id.lv);
        
        List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();
        
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("nameText", "我是第一个功能");
        map1.put("iconId", R.drawable.sym_call_incoming);
        data.add(map1);
        
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("nameText", "我是第二个功能");
        map2.put("iconId", R.drawable.sym_call_missed);
        data.add(map2);
        
        Map<String, Object> map3 = new HashMap<String, Object>();
        map3.put("nameText", "我是第三个功能");
        map3.put("iconId", R.drawable.sym_call_incoming);
        data.add(map3);
        
        Map<String, Object> map4 = new HashMap<String, Object>();
        map4.put("nameText", "我是第四个功能");
        map4.put("iconId", R.drawable.sym_call_outgoing);
        data.add(map4);
        
        Map<String, Object> map5 = new HashMap<String, Object>();
        map5.put("nameText", "我是第五个功能");
        map5.put("iconId", R.drawable.sym_contact_card);
        data.add(map5);
        
        
        //data 绑定数据  list集合
        //R.layout.list_item 数据显示对应的布局
        //要让数据跟view对象建立一个映射关系
        //from [] map集合里面数据的key
        //to [] 布局文件里面的 id
        lv.setAdapter(new SimpleAdapter(this, data, R.layout.list_item, new String[]{"nameText", "iconId"}, new int[]{R.id.tv, R.id.iv}));
    }
    
}

0 0
原创粉丝点击