Android ListView自定义布局

来源:互联网 发布:明天教室网络课 编辑:程序博客网 时间:2024/04/30 00:39

本人,刚刚入行android,今天碰到ListView自定义布局的问题,参考了些网上资料,终于实现了这一功能,别喷我,小弟是新手

我认为最主要的是适配器的编写,在这里我们先写个LIstview的布局文件listview.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal" ><TextViewandroid:id="@+id/item_tv"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center_vertical"/><TextViewandroid:id="@+id/item_tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center_vertical"/></LinearLayout>


然后我们就开始编写最主要部分了--适配器,集成BaseAdapter

public class ListViewAdapter extends BaseAdapter {//填充数据的ListList<Map<String,Object>> list =new ArrayList<Map<String,Object>>();//上下文private Context context;//用来导入布局private LayoutInflater inflater =null;//构造器public ListViewAdapter(List<Map<String,Object>> list,Context context){this.context=context;this.list=list;inflater=LayoutInflater.from(context);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}//核心部分,返回Listview视图@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder = null;if (convertView == null){holder=new ViewHolder();convertView =inflater.inflate(R.layout.listview, null);holder.tv=(TextView)convertView.findViewById(R.id.item_tv);holder.tv1=(TextView)convertView.findViewById(R.id.item_tv1);//为view设置标签convertView.setTag(holder);}else{holder=(ViewHolder)convertView.getTag();}holder.tv.setText(list.get(position).get("text").toString());holder.tv1.setText(list.get(position).get("text1").toString());return convertView;}  static class ViewHolder {  TextView tv;  TextView tv1;         } }



接下来是在Activity中实现整体功能了

public class OneTreasureActivity extends Activity {private ListView lv;private ListViewAdapter lvAdapter;List<Map<String,Object>> list =new ArrayList<Map<String,Object>>();//private ArrayList<String> list;public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        lv = (ListView) findViewById(R.id.CapsuleListView);      //  list=new ArrayList<Map<String,Object>>();        initDate();        lvAdapter =new ListViewAdapter(list,this);        lv.setAdapter(lvAdapter);          }//为了省事,这里就不改了,大概就是请求数据,返回json值进行解析private void initDate() {// TODO Auto-generated method stublist=getCapsuleListData("servlet/ShowCapsuleServlet.do");}public void onetreasuremorebtn(View v){Intent intent = new Intent (OneTreasureActivity.this,OneTreasureMore.class);startActivity(intent);}public List<Map<String,Object>> getCapsuleListData(String s){    Map<String,Object> map =new HashMap<String,Object>();      try{      String url=HttpUtil.BASE_URL+s;      String body=HttpUtil.queryStringForPost(url);JSONArray array=new JSONArray(body);list.clear();        for(int i=0;i<array.length();i++){        JSONObject obj=array.getJSONObject(i);        map.put("text",obj.getString("text"));        map.put("text1", obj.getString("text1"));            list.add(map);         map =new HashMap<String,Object>();         }                }catch(Exception e){         e.printStackTrace();        }      return list;        }}



就这样listview自定义布局完成

0 0
原创粉丝点击