个人技术博客(α)——GitHub and Android学习
本次α版本的开发,我负责的部分主要是团队的GitHub管理和Android的部分开发。这期间遇到许多问题,各种查阅资料 ,无不透露出一个小白的辛酸求学路(我们团队没有所谓的大佬,基本都是零基础。。)。下记至今为止所遇到的一些技术问题及解决方法。
关于Android
由于冲刺的时间实在太短,于是在阅读过《第一行代码》的基础上选择直接对我负责的部分进行直接开发和学习。由于我们采用的开发工具是Android studio,而《第一行代码》和网上的大多数教程采用的都是eclipse开发,所以在文件的组织结构上多多少少有点出入,现总结几点:
- 隐藏标题栏
在eclipse中方法如下:
即在setContentView()前面加上一句既可。但是在Android Studio中,如果我们默认建一个Acitivity类的话,这里的Activity类继承的是AppCompatActivity,这个是属于support v7附加包的类。而eclipse使用的则是v4包,继承的是Activity类。所以要解决这个问题,直接解决包的问题既可,这里我选择是在setContentView()
加上getSupportActionBar().hide()
。如下图:
这样就将标题栏隐藏,如果想要实现自定义的标题栏,在布局文件里进行相应配置既可。
- 用listview进行显示
在用listview进行显示数据时,我们要有三个步骤,分别是:1.准备数据源,2.配置适配器,3.给listview控件设置适配器。其中数据源可以是我们本地数据库存储的,也可以是网络传输的,还可以是临时设置的;适配器也有很多种,有ArrayAdapter、SimpleAdapter、BaseAdapter等,其中ArrayAdapter只能用于显示纯文本的数据,SimpleAdapter可显示图片等类型丰富的数据,而所有的适配器都是继承于BaseAdapter的,它的功能也较强大,能让我们灵活地写出适合自己的适配器,故我采用的是直接写一个Adapter继承于BaseAdapter,代码如下:
public class NoteAdapter extends BaseAdapter {
private Context context;
private ArrayList<Note> notesArrayList = new ArrayList<Note>();
public NoteAdapter(Context Context, ArrayList<Note> notesArrayList) {
this.context = Context;
this.notesArrayList = notesArrayList;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return notesArrayList.size();
}
@Override
public Object getItem(int i) {
// TODO Auto-generated method stub
return notesArrayList.get(i);
}
@Override
public long getItemId(int i) {
// TODO Auto-generated method stub
return i;
}
@Override
public View getView(int position, View convertview, ViewGroup viewgroup) {
//View myView = LayoutInflater.from(context).inflate(R.layout.gallery_item, null);
//ImageView imageView = (ImageView) myView.findViewById(R.id.image);
ImageView imageView=new ImageView(context);
imageView.setImageResource(notesArrayList.get(position).getImage());
return imageView;
}
}
其中最重要的是重写getview方法,将xml文件转成view对象,再从view对象里获取控件id,进行相应设置 。
- listview里结合使用gallery
难点在于两种控件都要使用adapter,而两种控件是嵌套的,adapter的设置方面有点问题,为此在网上找了一个效果和项目需求比较相近的demo来学习。但是,,那个代码的风格实在是不敢吐槽,,,变量的命名也是有点随意,,,看了两三天根本看不出逻辑。。。无奈对它彻底放弃,重新上网查找,终于实现,这里附上链接:Android 自定义ListView + Gallery 组合,下面为适配器和所用的类:
关于GitHub
对于GitHub的使用,一些基本的用法,在使用过程中一些基本的用法我已记录在另一篇博客里记录在我的另一篇博客里:戳我.对于一些更深层次的用法,西瓜学长的博文写的很好,可以参考:戳我.,廖雪峰老师的一张图总结得很好,可以清楚得知道各个命令间的联系:
关于团队协同开发环境的配置,以及使用的方法,也可参考西瓜学长的博文,说得很清楚。不过这其中有些小细节,需要注意:我们对团队仓库的操作最好都在团队项目内部,即cd进去,否则如果对git不是很熟悉的话很容易出问题。比如说出现如下问题:
这里的情景是我从自团队仓库fork到自己的远程库后,尝试在本地仓库新建一个dev分支,并把自己远程库的dev分支下的文件放在本地dev分支上,但是很明显失败了,细想原因是在自己克隆的仓库外部操作的,进去就好了。
我这个是存在dev
分支了,所以会有错,只需把dev
分支换个就好了,比如git checkout -b lzp origin/dev
;同理在设置上游分支的时候如果也报类似错误,也很有可能是没进去,这里不再详述。
关于冲突解决
当我们获取团队项目最新状态时,可能会有冲突,这时候要用编辑器打开文件找到冲突的地方并解决冲突后重新add和commit 到本地后再次合并,具体步骤也不再详述。
关于获取团队最新状态更新到本地
首先在通过git fetch upstream
方法获取团队仓库库最新状态,然后git merge upstream
将获取到的团队库内容与本地的进行合并,注意,在这之前如何你对本地的项目有所更改的话要先提交本地更改,否则会失败。