阅读更多

这几天在搞带有icon的list item,但实现方法貌似很复杂,照着国外达人的一些code snippet也搞不定,他们也没把全部的code发出了,NND。。。怒!今天终于集众家之大成。。。搞定一个了。。。想想还是GWT好,一个composite widget就很轻松搞定了。。。Android目前还算是垃圾滴。。。

做个ImageItem class存放icon和text:

java 代码  
  1. public class ImageItem {  
  2.   
  3.     private String text;  
  4.     private Drawable drawable;  
  5.     private boolean isSelectable = true;  
  6.       
  7.     public ImageItem(String text, Drawable drawable) {  
  8.         super();  
  9.         this.text = text;  
  10.         this.drawable = drawable;  
  11.     }  


然后做个View给这个composite view,这里extend了linearlayout,但你也可以使用其他的layout:

java 代码  
  1. public class ImageItemView extends LinearLayout {  
  2.   
  3.     private TextView text;  
  4.     private ImageView image;  
  5.       
  6.     public ImageItemView(Context context, String title, Drawable drawable) {  
  7.         super(context);  
  8.         this.setOrientation(HORIZONTAL);  
  9.           
  10.         image = new ImageView(context);  
  11.         image.setImageDrawable(drawable);  
  12.         // 左,上,右,下  
  13.         image.setPadding(0252);  
  14. //这里的layout一定要设置,不然无法显示,NND, 竟然default显示设置都没有!!  
  15.         addView(image, new LinearLayout.LayoutParams(  
  16.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
  17.           
  18.         text = new TextView(context);  
  19.         text.setText(title);  
  20.         addView(text, new LinearLayout.LayoutParams(  
  21.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
  22.     }  


接下来要做个Adapater给我们新建的composite view:
public class ImageItemArrayAdapter extends BaseAdapter {

    private Context context;
    private List items;
   
    public ImageItemArrayAdapter(Context ctx) {
        context = ctx;
        items = new ArrayList();
    }

里面要实现getView这个method,这里return上面新建的ImageItemView:

java 代码  
  1. public View getView(int position, View convertView, ViewGroup parent) {  
  2.         ImageItemView iiv;  
  3.         if (convertView==null) {  
  4.             iiv = new ImageItemView(context, items.get(position).getText(), items.get(position).getDrawable());  
  5.         } else {  
  6.             iiv = (ImageItemView)convertView;  
  7.             iiv.setText(items.get(position).getText());  
  8.             iiv.setImage(items.get(position).getDrawable());  
  9.         }  
  10.         return iiv;  
  11.     }  


最后用一个简单的ListActivity来demo下:

java 代码  
  1. public class ImageListItemDemo extends ListActivity {  
  2.       
  3.     List items;  
  4.   
  5. @Override  
  6.     public void onCreate(Bundle icicle) {  
  7.         super.onCreate(icicle);  
  8.         ImageItemArrayAdapter adapter = new ImageItemArrayAdapter(this);  
  9.         Resources res = this.getResources();  
  10.           
  11.         adapter.addItem(new ImageItem("Home", res.getDrawable(R.drawable.sliderhouse)));  
  12.         adapter.addItem(new ImageItem("Bar", res.getDrawable(R.drawable.bar)));  
  13.         adapter.addItem(new ImageItem("Book Store", res.getDrawable(R.drawable.bookstore)));  
  14.         adapter.addItem(new ImageItem("Cafe", res.getDrawable(R.drawable.cafe)));  
  15.         adapter.addItem(new ImageItem("Drug Store", res.getDrawable(R.drawable.drugstore)));  
  16.         adapter.addItem(new ImageItem("Fitness Center", res.getDrawable(R.drawable.fitness)));  
  17.         adapter.addItem(new ImageItem("Grocery", res.getDrawable(R.drawable.grocery)));  
  18.         adapter.addItem(new ImageItem("Library", res.getDrawable(R.drawable.library)));  
  19.         adapter.addItem(new ImageItem("Movie Theatre", res.getDrawable(R.drawable.movietheater)));  
  20.         adapter.addItem(new ImageItem("Park", res.getDrawable(R.drawable.park)));  
  21.         adapter.addItem(new ImageItem("Restaurant", res.getDrawable(R.drawable.restaurant)));  
  22.         adapter.addItem(new ImageItem("Super Market", res.getDrawable(R.drawable.retail)));  
  23.         adapter.addItem(new ImageItem("School", res.getDrawable(R.drawable.school)));  
  24.           
  25.         setListAdapter(adapter);  
  26.     }  


请看截图,效果不错吧!这个实现我觉得应该在google android API缺省要直接提供,毕竟用到的情况很多很多。

  • 大小: 22.3 KB
  • 查看图片附件

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 第一次使用Android(安卓)Studio时你应该知道的一切配置
  3. 把SVN项目存到码云,然后下载到Android(安卓)Studio进行代码改写
  4. Android(安卓)数字签名及命令行启动执行APK
  5. Android(安卓)应用广告过滤几种方式
  6. Android: Android(安卓)设计思想
  7. 处理Android文件访问问题。
  8. Android解决方案之:Android(安卓)Studio中Gradle的一些实例
  9. Android的Button按钮,ACTION_UP事件不触发解决方案

随机推荐

  1. Android(安卓)Animation ---TranslateAni
  2. 通过SOCKET实现文件下载
  3. 使用TelephonyManager获取手机相关信息
  4. android、webService 天气预报demo
  5. Keyguard之LockPatternView学习
  6. SensorSimulator -Android模拟器上模拟重
  7. Be careful when Android(安卓)up merge
  8. 接收系统广播监听网络变化
  9. Where the Android-SDK is installed ?
  10. Android(安卓)ExpandableListView 使用示