每日日报
把复杂界面(通过xml文件实现)显示到ListView上
public View getView(int position, View convertView, ViewGroup parent) {//把xml文件转化为 view对象的第一种方式 通过View的inflate方法//第一个参数 上下文//第二个参数 要转化成view对象 对应的布局id//第三个参数 viewGroup 是一个特殊的View对象 它可以加入子view 比如 LinearLayout RelativeLayout都是ViewGroup//如果这个参数传了值 那么创建出来的view 就是这个view的子view 我们在getview方法中 主要目的是把xml文件转化成view对象 显示在listview中//不需要加入到其他viewgroup中 所以这个参数传null就可以了View view = View.inflate(MainActivity.this, R.layout.item, null);//LayoutInflater 也有 inflate方法LayoutInflater inflater = LayoutInflater.from(MainActivity.this);View view2 = inflater.inflate(R.layout.item, null);//ArrayAdapter源码 采用的这种方式获取的打气筒 通过打气筒把xml布局文件转化为view对象LayoutInflater inflater2 = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);View view3 = inflater2.inflate(R.layout.item, null);return view3;}
把一个xml文件转化为View对象
① View的静态方法 View.inflate (这种方式比较方便)
② 获取LayoutInflater对象 通过LayoutInflater的inflate方法实现
获取LayoutInflater对象方式一 LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
获取LayoutInflater对象方式二 LayoutInflater inflater2 = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
(谷歌源码中采用的这种方式)
SimpleAdapter & ArrayAdapter的使用
12.1 ArrayAdapter
public class MainActivity2 extends Activity {private String datas[] = new String[]{"张小军","张欣","张丹丹"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView lv_list = (ListView) findViewById(R.id.lv_list);//第二个参数 用来显示数据的布局文件ID//第三个参数 布局文件中用来展示数据的具体的textview的id//第三个参数 String数组 用来显示的数据源ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item,R.id.tv_test, datas);lv_list.setAdapter(adapter);}}
条目布局文件
<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"tools:context=".MainActivity" ><TextViewandroid:id="@+id/tv_test"android:layout_width="match_parent"android:layout_height="match_parent"android:text="@string/hello_world" /></RelativeLayout>
SimpleAdapter
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView lv_list = (ListView) findViewById(R.id.lv_list);//List<map> 用来填充数据的List<Map<String, String>> data = new ArrayList<Map<String,String>>();Map<String, String> map1 = new HashMap<String, String>();map1.put("title", "中国足球又输了");map1.put("content", "2016冲击失败");data.add(map1);Map<String, String> map2 = new HashMap<String, String>();map2.put("title", "沪android12期高薪就业");map2.put("content", "平均薪水20K");data.add(map2);String[] from ={"title","content"};int[] to = {R.id.tv_title,R.id.tv_content};//第二个参数 数据map的List//第三个参数 用来显示数据的布局文件//第四个参数 String数组 数据List中 每一条数据的 key//第五个参数 数据List中 的文字内容 对应的 要显示此内容的 textView的idSimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item2, from, to);lv_list.setAdapter(adapter);}}
条目的布局文件
<?xml version="1.0" encoding="utf-8"?><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"tools:context=".MainActivity" ><ImageViewandroid:id="@+id/iv_icon"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_launcher"android:layout_margin="5dp"/><TextViewandroid:id="@+id/tv_title"android:layout_toRightOf="@id/iv_icon"android:layout_height="wrap_content"android:layout_width="wrap_content"android:layout_margin="7dp"android:text="北京今年装修要多少钱"android:textSize="18sp"/><TextViewandroid:id="@+id/tv_content"android:layout_toRightOf="@id/iv_icon"android:layout_below="@id/tv_title"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="获得报价"android:textColor="#999999"android:layout_marginLeft="8dp"android:textSize="16sp"/></RelativeLayout>

浙公网安备 33010602011771号