使用BaseAdapter實現複雜的ListView

來源:互聯網
上載者:User

步驟使用BaseAdapter實現複雜的ListView的步驟:1. 資料你要準備好 List getData()。 2. 繼承ListActivity專有屏,不再需要setContentView(xxx)。  3. 建立一個繼承自BaseAdapter的類。 4. 為List綁定適配器 setListAdapter(adapter)。 5. 用傳統的方式來覆寫適配器的getView函數  (從參數convertView裡映射布局檔案,find各個控制項填充資料)。 6. 改寫:加入ViewHolder類(定義n個控制項的聲明) 。  用convertView.setTag(viewHolder)在View和Object之間進行關聯.。 7. 給按鈕註冊點擊監聽器。可以用Toast或AlertDialogue彈出選擇項的資料。  friend_list.xml檔案[html] <?xml version="1.0" encoding="utf-8"?>  <!-- 這是範例ListView的布局檔案,出了ListView,還可以放置其他控制項 -->  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="fill_parent"      android:background="#fff"      android:orientation="vertical" >      <TextView          android:id="@+id/textView1"          android:layout_width="match_parent"          android:layout_height="50dp"          android:text=""           android:background="#2B3439"          android:gravity="center"          android:textSize="20sp"          android:textColor="#FFFFFF"/>            <LinearLayout          android:layout_width="match_parent"          android:layout_height="wrap_content"           android:layout_marginLeft="18dp"          android:layout_marginRight="18dp"          android:layout_marginTop="2dp"          android:layout_marginBottom="2dp"          android:background="@drawable/btn_style_four_normal">          <ImageView              android:id="@+id/imageView1"              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:src="@drawable/sm_searchbtn"               android:layout_marginRight="10dp"/>          <EditText              android:id="@+id/editText1"              android:layout_width="match_parent"              android:layout_height="35dp"              android:background="@null"              android:ems="10" >              <requestFocus />          </EditText>      </LinearLayout>        <ListView          android:id="@+id/listView1"          android:layout_width="match_parent"          android:paddingBottom="50dp"          android:cacheColorHint="#00000000"            android:layout_height="match_parent" >      </ListView>    </LinearLayout>   friend_list_item.xml檔案[html]  <?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="80dp"      android:orientation="horizontal"      android:padding="5dip"      android:paddingBottom="15dp" >        <ImageView          android:id="@+id/img"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_margin="5dp" />        <LinearLayout          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:orientation="vertical" >            <LinearLayout              android:layout_width="fill_parent"              android:layout_height="wrap_content"              android:orientation="horizontal" >                <TextView                  android:id="@+id/title"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:textColor="#000"                  android:textSize="20sp" />                <TextView                  android:id="@+id/time"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:layout_marginLeft="110dp"                  android:textColor="#000"                  android:textSize="18sp" />          </LinearLayout>            <TextView              android:id="@+id/info"              android:layout_width="wrap_content"              android:layout_height="fill_parent"              android:layout_marginTop="3dp"              android:textColor="#000"              android:textSize="15sp" />      </LinearLayout>    </LinearLayout>   WeixinActivity.java檔案[java]  package com.app.weixin;    import java.util.ArrayList;  import java.util.HashMap;  import java.util.List;    import com.app.wexin.R;    import android.app.Activity;  import android.app.AlertDialog;  import android.content.Context;  import android.content.DialogInterface;  import android.content.Intent;  import android.os.Bundle;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.BaseAdapter;  import android.widget.Button;  import android.widget.ImageView;  import android.widget.ListView;  import android.widget.TextView;    public class WeixinActivity extends Activity {      private ImageView img;      private List<HashMap<String, Object>> mData;      private ListView listView;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.friend_list);          mData = getData();//為剛才的變數賦值          MyAdapter adapter = new MyAdapter(this);//建立一個適配器                    listView = (ListView) findViewById(R.id.listView1);//執行個體化ListView          listView.setAdapter(adapter);//為ListView控制項綁定適配器      }        /** 自訂配接器 */      public class MyAdapter extends BaseAdapter {          private LayoutInflater mInflater;// 動態布局映射            public MyAdapter(Context context) {              this.mInflater = LayoutInflater.from(context);          }            // 決定ListView有幾行可見          @Override          public int getCount() {              return mData.size();// ListView的條目數          }            @Override          public Object getItem(int arg0) {              return null;          }            @Override          public long getItemId(int arg0) {              return 0;          }            @Override          public View getView(int position, View convertView, ViewGroup parent) {              convertView = mInflater.inflate(R.layout.friend_list_item, null);//根據布局檔案執行個體化view              TextView title = (TextView) convertView.findViewById(R.id.title);//找某個控制項              title.setText(mData.get(position).get("title").toString());//給該控制項設定資料(資料從集合類中來)              TextView time = (TextView) convertView.findViewById(R.id.time);//找某個控制項              time.setText(mData.get(position).get("time").toString());//給該控制項設定資料(資料從集合類中來)              TextView info = (TextView) convertView.findViewById(R.id.info);              info.setText(mData.get(position).get("info").toString());              img = (ImageView) convertView.findViewById(R.id.img);              img.setBackgroundResource((Integer) mData.get(position).get("img"));              return convertView;          }      }      // 初始化一個List      private List<HashMap<String, Object>> getData() {          // 建立一個集合類,用於存放多條資料          ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();          HashMap<String, Object> map = null;          for (int i = 1; i <= 40; i++) {              map = new HashMap<String, Object>();              map.put("title", "人物" + i);              map.put("time", "9月20日");              map.put("info", "我通過了你的好友驗證請求");              map.put("img", R.drawable.pic_person);              list.add(map);          }            return list;      }      public void showInfo(int position){          getData();      }   }   

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.