Android ViewList代码实现展现(不使用任何资源文件)_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android ViewList代码实现展现(不使用任何资源文件)

Android ViewList代码实现展现(不使用任何资源文件)

 2010/12/5 13:02:47  wu.sheng  http://wu-sheng.javaeye.com  我要评论(0)
  • 摘要:上一章,我实验了关于UI的基本效果,虽然还有很多控件需要二次开发和实验,不过至少说明是可以使用的。有些空间用代码生成确实十分的麻烦。比如,我花了一个晚上才研究明白,ViewList怎么能够用纯代码显示页面。首先,我们需要声明ListView控件,设置布局和数据源ListViewlv=newListView(context);lv.setId(12347);lv.setDrawSelectorOnTop(false);lv.setLayoutParams(newLayoutParams
  • 标签:android 实现 使用 view list 文件 代码 资源

???? 上一章,我实验了关于UI的基本效果,虽然还有很多控件需要二次开发和实验,不过至少说明是可以使用的。有些空间用代码生成确实十分的麻烦。比如,我花了一个晚上才研究明白,ViewList怎么能够用纯代码显示页面。

???? 首先,我们需要声明ListView控件,设置布局和数据源

            ListView lv = new ListView(context);
            lv.setId(12347);
            lv.setDrawSelectorOnTop(false);
            lv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 200));
            lv.setBackgroundColor(Color.BLACK);

            File f = new File("/");
            File[] files = f.listFiles();
            ArrayList<HashMap<String, String>> fileInfos = new ArrayList<HashMap<String, String>>();
            for (File file : files) {
                HashMap<String, String> fileInfo = new HashMap<String, String>();
                fileInfo.put("FILE_NAME", file.getName());
                fileInfos.add(fileInfo);
            }

            MyAdapter adapter = new MyAdapter(context, fileInfos,// 数据来源
                    new String[] { "FILE_NAME" });

            lv.setAdapter(adapter);
            layout.addView(lv);

??? ?需要注意的是LayoutParams和MyAdapter 两个地方

???? LayoutParams:当用eclipse开发自动生成时,你会发现,有好多同名类,一定要选择正确的,这里需要选择的是:android.widget.LinearLayout,因为ListView 所属容器是LinearLayout类型。

???? MyAdapter:则是一处需要自行开发的了,虽然Android库中带了好多已实现的Adapter,但是我测试的好多,实现方式都是从资源文件中读取布局信息,这样让之前的努力都白费了,随意这是,只好自己实现了。

???? 由于是测试,方法并没有全部正常的实现,也没有异常处理,仅作为示例使用:

public class MyAdapter extends BaseAdapter {
    Context context;

    ArrayList<HashMap<String, String>> data;

    String[] from;

    public MyAdapter(Context context, ArrayList<HashMap<String, String>> data, String[] from) {
        this.context = context;
        this.data = data;
        this.from = from;
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return data.get(position);
    }

    public long getItemId(int position) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        TableLayout lay = null;
        if (null == convertView) {
            TableRow tr = new TableRow(context);
            TextView tv_l = new TextView(context);
            TextView tv_l2 = new TextView(context);
            tv_l.setText("* ");
            tv_l2.setText(data.get(position).get(from[0]));
            tv_l2.setGravity(Gravity.LEFT);
            tv_l2.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv_l);
            tr.addView(tv_l2, new TableRow.LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            lay = new TableLayout(context);
            lay.addView(tr);
        } else {
            lay = (TableLayout) convertView;
        }
        lay.setColumnStretchable(1, true);
        return lay;

    }
}

?

????? 这里自动构建了每一行是一个TableLayout,并包含一个TableRow,TableRow 中才是需要显示的内容,这样可以方便以后的各种布局。

????? 展现效果:

?????

????? 另外提一点的是:Android由于实现了一部分JAVA类库,所以文件访问和Java程序是基本类似的,虽然还没有测试细节的API,但是从读取根目录来看,是完全正常的。

发表评论
用户名: 匿名