作者sorrel20567 (嗨)
看板AndroidDev
标题[分享] 把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
1F:推 nowar100:站在巨人肩膀正向循环阿 推 已收录 04/20 01:08
2F:推 terrybob:感谢,收文了 04/20 03:19
3F:推 givemepass:感谢你对我的文章评价那麽高 你这篇也很有参考价值 04/20 08:19
4F:→ givemepass:文章用302标记 可能会跑掉 建议用文章代码表示:) 04/20 08:19
5F:→ givemepass:另外如果能够有再你这份教学程式下载 就更完美了^^ 04/20 08:21
6F:推 tomap41017:推一下!感谢各位分享 04/20 11:12
7F:→ tomap41017:借版面一问,如果registerContextMenu(ListView)的话 04/20 11:12
8F:→ tomap41017:有办法可以避免header/(置底)的layout不要产生context 04/20 11:13
9F:→ tomap41017:menu吗?不然感觉很奇怪(只想让list item有menu) 04/20 11:13
10F:推 badhabit:补充:最後提到的cacheColorHint="#00000000"是ARGB格式 04/20 13:09
11F:→ badhabit:最前面的00是控制透明度 04/20 13:10
13F:推 tomap41017:感谢楼上回复,後来发现我的问题只要不要把header/foot 04/20 15:28
14F:→ tomap41017:放在内就好了= =因之前用listActivity还不知道怎麽自订 04/20 15:28
15F:→ tomap41017:main,刚找到一个网站有说明,只要把ListView的id设成 04/20 15:29
16F:→ tomap41017:android:list就可自动bind了XD 04/20 15:29
17F:→ sorrel20567:其实我不是很懂tomap大的问题耶,解决了後要发分享文 04/20 20:26
18F:→ sorrel20567:吗XD 04/20 20:26
19F:→ sorrel20567:补上我的程式载点 04/22 12:30