订制ListeView界面

来源:互联网 发布:所有网络命令 编辑:程序博客网 时间:2024/04/28 07:25

新建一个listeview项目
修改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">    <ListView        android:id="@+id/listView"        android:layout_width="match_parent"        android:layout_height="match_parent">    </ListView></RelativeLayout>

在res/layout中新建一个string_item.xml文件
插入两个TextView

<?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="match_parent">    <TextView        android:id="@+id/stringtext1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"       />    <TextView        android:id="@+id/stringtext2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"     /></LinearLayout>

定义一个实体类,作为ListView适配器的适配类型

public class string_item {public String stringtext1;public String stringtext2;public String getStringtext1() {    return stringtext1;}public String getStringtext2() {    return stringtext2;}public string_item(String stringtext1, String stringtext2) {    this.stringtext1 = stringtext1;    this.stringtext2 = stringtext2;}}

创建一个自定义适配器并将泛型指定为string_item类

package com.example.adapter;import java.util.List;import com.example.action.string_item;import com.example.listview.R;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.TextView;public class StringAdapter extends ArrayAdapter<string_item> {private int resourceId;    public StringAdapter(Context context, int resource, List<string_item> objects) {        super(context, resource, objects);        // TODO Auto-generated constructor stub        this.resourceId=resource;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        // TODO Auto-generated method stub        string_item item=getItem(position);//获取当前项的string_item实例        View view=LayoutInflater.from(getContext()).inflate(resourceId, null);        TextView stringtext1=(TextView) view.findViewById(R.id.stringtext1);        TextView stringtext2=(TextView) view.findViewById(R.id.stringtext2);        stringtext1.setText(item.getStringtext1());        stringtext2.setText(item.getStringtext2());        return view;    }}

修改MainActivity中的代码

public class MainActivity extends Activity {private List<string_item> stringitem=new ArrayList<string_item>();  @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initString();//初始化string_item类的数据        StringAdapter adapter=new StringAdapter(MainActivity.this,R.layout.string_item ,stringitem); ListView listView=(ListView) findViewById(R.id.listView);        listView.setAdapter(adapter);    }private void initString(){    for (int i = 0; i < 100; i++) {        string_item string=new string_item(i+"", (i+1)+"");        stringitem.add(string);    }   }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}

适配器还可以优化一下,代码如下

public class StringAdapter extends ArrayAdapter<string_item> {private int resourceId;    public StringAdapter(Context context, int resource, List<string_item> objects) {        super(context, resource, objects);        // TODO Auto-generated constructor stub        this.resourceId=resource;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        // TODO Auto-generated method stub        string_item item=getItem(position);//获取当前项的string_item实例        View view;        ViewHolder viewHolder;        if(convertView==null){        view=LayoutInflater.from(getContext()).inflate(resourceId, null);        viewHolder=new ViewHolder();        viewHolder.stringtext1=(TextView) view.findViewById(R.id.stringtext1);        viewHolder.stringtext2=(TextView) view.findViewById(R.id.stringtext2);        view.setTag(viewHolder);//将viewholder存储在view中        }else {            view=convertView;            viewHolder=(ViewHolder) view.getTag();//重新获取viewholder        }        viewHolder.stringtext1.setText(item.getStringtext1());        viewHolder.stringtext2.setText(item.getStringtext2());        return view;    }    class ViewHolder{    TextView stringtext1;    TextView stringtext2;    }}
0 0
原创粉丝点击