顯示廣告
隱藏 ✕
※ 本文為 cuteman0725 轉寄自 ptt.cc 更新時間: 2011-12-10 10:43:30
看板 AndroidDev
作者 sorrel20567 (嗨)
標題 [分享] 把ListVIEW打包成Adapter再裝進普通的ACTIVITY
時間 Tue Apr 19 22:58:22 2011



基本觀念,請先熟讀302篇大大分享的自訂ListVIEW方法

有了那篇的觀念以後,瞭解了list view裡每列的長像,是在adapter.xml中畫好的

之後由於我想把這個listview裝進普通的activity裡
首先來講一下我的所謂的普通的activity長怎麼樣吧












<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/tiger">
 <TextView android:id="@+id/T1"
        android:layout_width="fill_parent"
        android:layout_height="45px"
        android:text="@string/hello"
        android:background="#222222"
        android:layout_marginTop="40px"
        android:textSize="28px"
        <ListView android:id="@+id/L1"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginLeft="30px"
        android:layout_marginRight="30px"
        android:cacheColorHint="#00000000"/>
</LinearLayout>

是的,裡面有一個叫T1的TextVIEW   還有一個叫L1的ListVIEW
其中listview是專門用來裝list的容器...
還有一種容器叫做checkable_textview(好像是這樣)
因為種類太多太雜,所以我也沒有研究很多

只是一開始學這邊的時候覺得在java檔裡動態產生文字的list比較簡單

只要
private ArrayAdapter<String> adapter;
private static final String[] array ={~~~~~~~~~};

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.simple_list_item_1, array);

myListView.setAdapter(adapter);


就可以把字串陣列丟到系統內建名為simple_list_item_1的 listview樣式裡了



然後
在302篇中教了如何用使一個自訂的adapter(樣式)
來代替simpli_list_item_1    於是現在我們的list都有了圖片
以及可能不只一行的文字

於是我把iconAdapter包在我的main activity裡
public class main extends Activity
{
        TextView T1;
        ListView L1;
        private static class iconAdapter extends BaseAdapter
        {
        }
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //並且把adapter丟到我的L1裡
            L1.setAdapter(new iconAdapter(this));
        }
}

然後!!!!
要讓你的listview可以接受點擊事件,就在onCreate裡增加L1的Listener
   L1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
   {

     @Override
     public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                                                                long arg3)
     {
                  T1.setText("你選的是" + DATA[arg2]);
     }
     @Override
   });










   L1.setOnItemClickListener(new AdapterView.OnItemClickListener()
   {
     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2,
                                                                   long arg3)
     {
          T1.setText("你選的是" + DATA[arg2]);
     }
   });

據我所知,好像是當你有把adapter丟進listview時
才可以給listview設listener









若是引用302篇那範例,想要讓你的list可以接受點擊事件
則只要加入
(在onCreate之外加)
    @Override
    public void onListItemClick(ListView l, View v, final int position,
                                                                 long id)
    {
             Toast.makeText(this, DATA[position].toString() + "已核取!",
                Toast.LENGTH_SHORT).show();
             super.onListItemClick(l, v, position, id);
    }

和上面不一樣的是,這裡的position是代表你點到第幾欄位
上面那裡的arg2才是點到第幾欄位

當你的list東西太多,滿到下面去.....在滑動時若會變黑,
請記得在xml檔裡的listview屬性裡加一行
android:cacheColorHint="#00000000"   <--------變白

今天要分享的大概就是這樣



302那篇真的很詳細,我是踩在巨人的肩膀上:)

--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.51.13
nowar100:站在巨人肩膀正向循環阿 推 已收錄1F 04/20 01:08
terrybob:感謝,收文了2F 04/20 03:19
givemepass:感謝你對我的文章評價那麼高 你這篇也很有參考價值3F 04/20 08:19
givemepass:文章用302標記 可能會跑掉 建議用文章代碼表示:)
givemepass:另外如果能夠有再你這份教學程式下載 就更完美了^^
tomap41017:推一下!感謝各位分享6F 04/20 11:12
tomap41017:借版面一問,如果registerContextMenu(ListView)的話
tomap41017:有辦法可以避免header/(置底)的layout不要產生context
tomap41017:menu嗎?不然感覺很奇怪(只想讓list item有menu)
badhabit:補充:最後提到的cacheColorHint="#00000000"是ARGB格式10F 04/20 13:09
badhabit:最前面的00是控制透明度
sorrel20567:回tomap大,http://ppt.cc/~M9H,不知有沒有幫助12F 04/20 14:17
2010-04-21 Beginning Android 11~15 @ 我。閱讀 :: 痞客邦 PIXNET :: Chapter 11 Menu  Option menu 有分長按跟短按,短按會出 icon mode,此時若超過 6 buttons,第六個 button 會是 more。長按則是 expand m
 
tomap41017:感謝樓上回復,後來發現我的問題只要不要把header/foot13F 04/20 15:28
tomap41017:放在內就好了= =因之前用listActivity還不知道怎麼自訂
tomap41017:main,剛找到一個網站有說明,只要把ListView的id設成
tomap41017:android:list就可自動bind了XD
sorrel20567:其實我不是很懂tomap大的問題耶,解決了後要發分享文17F 04/20 20:26
sorrel20567:嗎XD
sorrel20567:補上我的程式載點
sorrel20567:http://www.megaupload.com/?d=1V4T51QW
[圖]

 

--
※ 看板: P_qman 文章推薦值: 0 目前人氣: 0 累積人氣: 293 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇