[分享] 把ListVIEW打包成Adapter再裝進普通的ACTIVITY
基本觀念,請先熟讀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
推
04/20 01:08, , 1F
04/20 01:08, 1F
推
04/20 03:19, , 2F
04/20 03:19, 2F
推
04/20 08:19, , 3F
04/20 08:19, 3F
→
04/20 08:19, , 4F
04/20 08:19, 4F
→
04/20 08:21, , 5F
04/20 08:21, 5F
推
04/20 11:12, , 6F
04/20 11:12, 6F
→
04/20 11:12, , 7F
04/20 11:12, 7F
→
04/20 11:13, , 8F
04/20 11:13, 8F
→
04/20 11:13, , 9F
04/20 11:13, 9F
推
04/20 13:09, , 10F
04/20 13:09, 10F
→
04/20 13:10, , 11F
04/20 13:10, 11F
→
04/20 14:17, , 12F
04/20 14:17, 12F
推
04/20 15:28, , 13F
04/20 15:28, 13F
→
04/20 15:28, , 14F
04/20 15:28, 14F
→
04/20 15:29, , 15F
04/20 15:29, 15F
→
04/20 15:29, , 16F
04/20 15:29, 16F
→
04/20 20:26, , 17F
04/20 20:26, 17F
→
04/20 20:26, , 18F
04/20 20:26, 18F
→
04/22 12:30, , 19F
04/22 12:30, 19F
→
04/22 12:30, , 20F
04/22 12:30, 20F
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章