这两个是5.0新加的。有其他的,没了解。
着重看了RecyclerView。并写了个Demo。具体看的是:
http://blog.csdn.net/lmj623565791/article/details/45059587;【张鸿洋的博客】
我的总结是:1,控件
2,设置
3,添加适配器
1,控件,在布局中添加控件
<android.support.v7.widget.RecyclerView
android:id="@+id/id_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2,设置,在activity中找到控件,然后进行设置。
RecyclerView rlv = rlv.setLayoutManager(new LinearLayoutManager(this));
(设置中,还可以给item加上动画
//设置Item增加、移除动画rlv.setItemAnimator(new DefaultItemAnimator());)
3,添加适配器
HomeAdapter ha = new HomeAdapter();
rlv.setAdapter(ha);
具体代码:
import java.util.ArrayList;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
private RecyclerView rlv;
private ArrayList< String> al;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
rlv = (RecyclerView) findViewById(R.id.id_recyclerview);//获取控件RecyclerView
rlv.setLayoutManager(new LinearLayoutManager(this));//给控件RecyclerView 设置属性(方向啦(竖向或横向滑动),有几格几列啦(实现ViewGroup))
HomeAdapter ha = new HomeAdapter();//适配器
rlv.setAdapter(ha);//添加适配器
}
//初始化些数据
private void initData() {
al = new ArrayList<String>();
for(int i=0;i<20;i++){
al.add("lalala"+i);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
//适配器,继承的是RecyclerView.Adapte(要求添加泛型)
//重写三个方法,自动添加的
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyHomeholder>
{
//返回定义的ViewHolder
@Override
public MyHomeholder onCreateViewHolder(ViewGroup arg0, int arg1) {
// TODO Auto-generated method stub
MyHomeholder mh = new MyHomeholder(View.inflate(MainActivity.this, R.layout.item_home, null));
return mh;
}
//返回数据的数目
@Override
public int getItemCount() {
// TODO Auto-generated method stub
return al.size();
}
//没有返回值的方法。给item。即:通过holder给item设置具体数据
@Override
public void onBindViewHolder(MyHomeholder holder, int position) {
// TODO Auto-generated method stub
holder.tv.setText(al.get(position));
}
//自定义的holder,继承ViewHolder(ViewHolder来自v7包)
class MyHomeholder extends ViewHolder{
TextView tv;
public MyHomeholder(View itemView) {
super(itemView);
// TODO Auto-generated constructor stub
tv=(TextView) itemView.findViewById(R.id.tv_tv);
}
}
}