好了,昨天和今天一起完成和解决了一些问题,现在列举如下:
“类别选择的操作”
这个问题在我心中推敲了好些时间,我的类别是有层级嵌套的,你点开第一个类别,里面还有四五个类别,继续点开里面的可能还有更深的类别,所以这个选择类别的逻辑在手机操作上要思考思考,因为手机屏幕有限,不能乱七八糟全往界面上面塞,还有手机的响应时间也是问题,我的数据是从服务器上面拉取的,一次性将所有的数据一起拉取出来,响应时间会很长,这个也不行,还有,手机的控件中,暂时没有发现类似treeView这样的空间,基于这些问题和考虑,最终选择了listview作为显示控件,操作流程:当用户要添加信息点的时候,弹出一个信息收集界面,里面就有一个textview,用户收集用户选择的类别信息,提示用户点击该textview,之后就弹出另一个页面,这个页面里面就只有一个listview,每个listviewItem里面都有一个textView和一个button,分别用于显示类别名,和确认选择,第一次:将第一级的类别填充到listview中,当用户点击其中某一项item的时候再将这个类的下属类别填充到这个listview中(之前填充的类别信息会被替换掉),如果用户确定要选择某个类别的时候,就单击对应的button,然后将用户选择的类别对应的id和名称传回刚刚用于收集信息的那个页面中等待下一步操作。
这里面就涉及到了一些技术问题了,用到了很多activity间的数据传输,界面布局,控件使用。
activity间传值,使用Intent,比如当前是A Activity,现在要跳转到B Activity同时传递一些参数:
Intent B_intent=new Intent();
B_intent.setClass(A.this, B.class);
B_intent.putExtra("x", x);
B_intent.putExtra("y", y);
startActivity(B_intent);
这样就跳转到B Activity,同时还传递了两个参数。
如果说要从A Activity跳转到B Activity,但是跳到B Activity的目的就是希望用户在B Activity中提供一些信息,输入结束之后可以返回到原来的A Activity,同时将刚刚在B Activity中输入的信息告诉A Activity,这个就稍微绕了一点,也不难:
首先在A Activity中:
Intent B_intent=new Intent();
B_intent.setClass(A.this, B.class);
startActivityForResult(B_intent, 1);
上面几行代码的意思这里简单说一下,和前面那个简单跳转的代码只有一点点不一样,就是启动activity使用的方法,这里的startActivityForResult(B_intent, 1)是说,A启动一个activity,同时监听这个activity的回传动作,当B activity回传的时候就会被A捕捉到,那个1,应该就是给这个回传定一个标识,在捕捉回传的时候加以区分(因为监听回传动作的方法只有一个,而你启动回传的acvitity却可能有很多个,就用这个来区分了),好了,现在经过上面的捣腾,已经启动了B,接着B已经收集到了用户信息,准备回传了:
Intent intent=new Intent();
intent.putExtra("userInfo","info");
B.this.setResult(RESULT_OK,intent);
B.this.finish();
也是不复杂的,还是用到了intent,往里面添加需要回传的信息,调用setResult方法,那个RESULT_OK我感觉没什么用,不理他了,然后在调用finish方法结束B,就跳回到A了,现在B完成了使命,看看A是怎样接受回传信息的,上面说了那么多的监听器,下面就说说这个监听器的逻辑:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1){
int classID= data.getIntExtra("classID", 1);
String className=data.getStringExtra("className");
classText.setText(className);
classText.setTag(classID);
}
}
这个监听器是重写的,这里的requestCode就是之间说的那个标识1啦,这里象征性地判断一下,然后从data这个参数中提取信息,ok完成了!
还有一个问题就是界面上的,android:layout_gravity这个属性的使用,在布局的时候,我希望textview在屏幕靠左边的地方,而button在屏幕靠右边的地方,看网上说就是使用这个属性,但是我给button设置了layout_gravity=right之后,没有反应,后来搜索了一下,说还要给textview设置:android:layout_weight="1"就可以了,具体的原理我还不甚明白,日后慢慢解答!
|