首先是主代码块
package alice.bw.com.day01zhoukao;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import java.util.ArrayList;
import alice.bw.com.day01zhoukao.adapter.MyViewpgerAdaper;
import alice.bw.com.day01zhoukao.fragment.A_Fragmen;
import alice.bw.com.day01zhoukao.fragment.B_Fragment;
import alice.bw.com.day01zhoukao.fragment.C_Fragment;
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {
private Toolbar mToolbar;
private DrawerLayout mDrawerLayout;
private TextView drawer_layout_tv;
private ViewPager vp;
private ArrayList<Fragment> mFragments;
private RadioGroup rg;
private RadioButton[] rbArray ;
private MyViewpgerAdaper mAdaprer;
private FragmentManager fm ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer_layout_tv = (TextView) findViewById(R.id.drawer_layout_tv);
vp = (ViewPager) findViewById(R.id.vp);
mFragments = new ArrayList<>();
mFragments.add(new A_Fragmen());
mFragments.add(new B_Fragment());
mFragments.add(new C_Fragment());
fm = getSupportFragmentManager();
mAdaprer = new MyViewpgerAdaper(fm,mFragments);
vp.setAdapter(mAdaprer);
vp.setCurrentItem(0);
mToolbar.setNavigationIcon(R.mipmap.ic_launcher);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
});
drawer_layout_tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
vp.setCurrentItem(1);
}
});
rg = (RadioGroup) findViewById(R.id.rg);
rbArray = new RadioButton[rg.getChildCount()];
for (int i = 0; i <rbArray.length ; i++) {
rbArray[i] = (RadioButton) rg.getChildAt(i);
}
rbArray[0].setChecked(true);
rg.setOnCheckedChangeListener(this);
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i <rbArray.length ; i++) {
if(position == i){
vp.setCurrentItem(i);
rbArray[i].setChecked(true);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public void onCheckedChanged(RadioGroup radioGroup, int id) {
for (int i = 0; i <rbArray.length ; i++) {
if(id == rbArray[i].getId()){
vp.setCurrentItem(i);
}
}
}
}
然后是三个布局
package alice.bw.com.day01zhoukao.fragment;
import android.content.ContentResolver;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.io.IOException;
import java.util.ArrayList;
import alice.bw.com.day01zhoukao.R;
import alice.bw.com.day01zhoukao.adapter.MyRecyclerViewAdapter;
import alice.bw.com.day01zhoukao.cans.Cans;
import alice.bw.com.day01zhoukao.domain.QQinfo;
/**
* A simple {@link Fragment} subclass.
*/
public class A_Fragmen extends Fragment {
private RecyclerView recyclerView;
private ArrayList<QQinfo> mList;
private MyRecyclerViewAdapter mAdapter;
private ContentResolver mResolver;
private String path = "content://alice.bw.com.day01zhoukao/user";
public A_Fragmen() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_a, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
mResolver = getActivity().getContentResolver();
mList = new ArrayList<>();
Uri uri = Uri.parse(path);
Cursor cursor = mResolver.query(uri, null, null, null, null, null);
int qq_numberIndex = cursor.getColumnIndex(Cans.QQ_NUMBER);
int qq_nicknameIndex = cursor.getColumnIndex(Cans.QQ_NICKNAME);
int qq_portraitIndex = cursor.getColumnIndex(Cans.QQ_PORTRAIT);
int qq_chat_msgIndex = cursor.getColumnIndex(Cans.QQ_CHAT_MSG);
int qq_timeIndex = cursor.getColumnIndex(Cans.QQ_TIME);
while (cursor.moveToNext()){
String qq_number = cursor.getString(qq_numberIndex);
String qq_nickname = cursor.getString(qq_nicknameIndex);
String qq_portrait = cursor.getString(qq_portraitIndex);
String qq_chat_msg = cursor.getString(qq_chat_msgIndex);
String qq_time = cursor.getString(qq_timeIndex);
Uri mImageCaptureUri = Uri.parse(qq_portrait) ;
Bitmap qq_portraitBitmap = null;
if (mImageCaptureUri != null) {
try {
qq_portraitBitmap = MediaStore.Images.Media.getBitmap(mResolver, mImageCaptureUri);
} catch (IOException e) {
e.printStackTrace();
}
}
QQinfo info = new QQinfo(qq_number,qq_nickname,qq_portraitBitmap,qq_chat_msg,qq_time);
mList.add(info);
}
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(manager);
mAdapter = new MyRecyclerViewAdapter(getActivity(),mList);
recyclerView.setAdapter(mAdapter);
return view;
}
}
2
package alice.bw.com.day01zhoukao.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import alice.bw.com.day01zhoukao.R;
/**
* A simple {@link Fragment} subclass.
*/
public class B_Fragment extends Fragment {
public B_Fragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_b, container, false);
}
}
3
package alice.bw.com.day01zhoukao.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import alice.bw.com.day01zhoukao.R;
/**
* A simple {@link Fragment} subclass.
*/
public class C_Fragment extends Fragment {
public C_Fragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_c, container, false);
}
}
适配器
package alice.bw.com.day01zhoukao.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import alice.bw.com.day01zhoukao.R;
import alice.bw.com.day01zhoukao.domain.QQinfo;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 17:21
*/
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>{
private Context mContext;
private LayoutInflater mInflater;
private ArrayList<QQinfo> mList;
public MyRecyclerViewAdapter(Context context, ArrayList<QQinfo> list) {
mContext = context;
mList = list;
mInflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.item_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
QQinfo info = mList.get(position);
holder.img.setImageBitmap(info.getQq_portrait());
holder.tv.setText(info.getQq_nickname());
}
@Override
public int getItemCount() {
if(mList == null){
return 0;
}
return mList.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
ImageView img;
TextView tv;
public ViewHolder(View itemView) {
super(itemView);
img = (ImageView) itemView.findViewById(R.id.qq_img);
tv = (TextView) itemView.findViewById(R.id.tv);
}
}
}
2
package alice.bw.com.day01zhoukao.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 17:19
*/
public class MyViewpgerAdaper extends FragmentPagerAdapter {
private ArrayList<Fragment> mList;
public MyViewpgerAdaper(FragmentManager fm, ArrayList<Fragment> list) {
super(fm);
mList = list;
}
public MyViewpgerAdaper(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if(mList!=null){
return mList.get(position);
}
return null;
}
@Override
public int getCount() {
if(mList!=null){
return mList.size();
}
return 0;
}
}
CANS
package alice.bw.com.day01zhoukao.cans;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 16:36
*/
public class Cans {
//create table user(_id integer primary key autoincrement,qq_number text,qq_nickname text,qq_portrait text,qq_chat_msg text,qq_time text)
public static final String TABLE_NAME = "user";//表明
public static final String TABLE_ID = "_id";//主键
public static final String QQ_NUMBER = "qq_number";//qq号码
public static final String QQ_NICKNAME = "qq_nickname";//qq昵称
public static final String QQ_PORTRAIT = "qq_portrait";//qq头像
public static final String QQ_CHAT_MSG = "qq_chat_msg";//qq聊天记录
public static final String QQ_TIME = "qq_time";//qq聊天时间
}
db
package alice.bw.com.day01zhoukao.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import alice.bw.com.day01zhoukao.R;
import alice.bw.com.day01zhoukao.cans.Cans;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 16:24
*/
public class QQOpenHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
private static final String TABLE_NAME ="User";
public QQOpenHelper(Context context) {
super(context, TABLE_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//字段 QQ号、QQ昵称、QQ头像在手机中的位置、聊天的内容信息、聊天的时间
sqLiteDatabase.execSQL("create table user(_id integer primary key autoincrement,qq_number text,qq_nickname text,qq_portrait text,qq_chat_msg text,qq_time text)");
for (int i = 0; i <10 ; i++) {
//往第一张表中添加登录信息
ContentValues contentValues=new ContentValues();
contentValues.put(Cans.QQ_NUMBER,"123456"+i);
contentValues.put(Cans.QQ_NICKNAME,"小--"+i);
contentValues.put(Cans.QQ_PORTRAIT,"android.resource://alice.bw.com.day01zhoukao/"+ R.mipmap.ic_launcher);
contentValues.put(Cans.QQ_CHAT_MSG,"聊天内容--"+i);
contentValues.put(Cans.QQ_TIME,"2017年11月6日");
sqLiteDatabase.insert(Cans.TABLE_NAME,null,contentValues);
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
domain
package alice.bw.com.day01zhoukao.domain;
import android.graphics.Bitmap;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 17:28
*/
public class QQinfo {
//qq_number text,qq_nickname text,qq_portrait text,qq_chat_msg text,qq_time text
private String qq_number;//号码
private String qq_nickname;//昵称
private Bitmap qq_portrait;//头像
private String qq_chat_msg;//聊天记录
private String qq_time;//时间
public QQinfo(String qq_number, String qq_nickname, Bitmap qq_portrait, String qq_chat_msg, String qq_time) {
this.qq_number = qq_number;
this.qq_nickname = qq_nickname;
this.qq_portrait = qq_portrait;
this.qq_chat_msg = qq_chat_msg;
this.qq_time = qq_time;
}
public QQinfo() {
}
public String getQq_number() {
return qq_number;
}
public void setQq_number(String qq_number) {
this.qq_number = qq_number;
}
public String getQq_nickname() {
return qq_nickname;
}
public void setQq_nickname(String qq_nickname) {
this.qq_nickname = qq_nickname;
}
public Bitmap getQq_portrait() {
return qq_portrait;
}
public void setQq_portrait(Bitmap qq_portrait) {
this.qq_portrait = qq_portrait;
}
public String getQq_chat_msg() {
return qq_chat_msg;
}
public void setQq_chat_msg(String qq_chat_msg) {
this.qq_chat_msg = qq_chat_msg;
}
public String getQq_time() {
return qq_time;
}
public void setQq_time(String qq_time) {
this.qq_time = qq_time;
}
@Override
public String toString() {
return "QQinfo{" +
"qq_number='" + qq_number + '\'' +
", qq_nickname='" + qq_nickname + '\'' +
", qq_portrait=" + qq_portrait +
", qq_chat_msg='" + qq_chat_msg + '\'' +
", qq_time='" + qq_time + '\'' +
'}';
}
}
provider
package alice.bw.com.day01zhoukao.provider;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.Nullable;
import alice.bw.com.day01zhoukao.cans.Cans;
import alice.bw.com.day01zhoukao.db.QQOpenHelper;
/**
* @author alice
* @version 1.0
* @Date 2017/11/6 16:54
*/
public class MyContentProvider extends ContentProvider {
private SQLiteDatabase db;
private String path = "content://alice.bw.com.day01zhoukao/user";
@Override
public boolean onCreate() {
QQOpenHelper helper = new QQOpenHelper(getContext());
db = helper.getReadableDatabase();
return false;
}
@Nullable
@Override
public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
Cursor c = db.query(Cans.TABLE_NAME,strings,s,strings1,null,null,s1);
return c;
}
@Nullable
@Override
public String getType(Uri uri) {
return null;
}
@Nullable
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
long insert = db.insert(Cans.TABLE_NAME, null, contentValues);
Uri u = ContentUris.withAppendedId(Uri.parse(path),insert);
return u;
}
@Override
public int delete(Uri uri, String s, String[] strings) {
return 0;
}
@Override
public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
return 0;
}
}
主体布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.MainActivity">
<LinearLayout
android:id="@+id/center"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="60dp"
/>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"></android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_00"
android:layout_width="0dp"
android:layout_height="match_parent"
android:drawableTop="@drawable/img"
android:text="消息"
android:layout_weight="1"
android:textColor="@android:color/black"
android:gravity="center"
android:button="@null"/>
<RadioButton
android:id="@+id/rb_01"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:drawableTop="@drawable/img"
android:text="联系人"
android:textColor="@android:color/black"
android:gravity="center"
android:button="@null"/>
<RadioButton
android:id="@+id/rb_02"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:drawableTop="@drawable/img"
android:text="动态"
android:textColor="@android:color/black"
android:gravity="center"
android:button="@null"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:id="@+id/left_layout"
android:layout_gravity="left"
android:orientation="vertical"
android:layout_width="200dp"
android:layout_height="match_parent">
<TextView
android:id="@+id/drawer_layout_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我是超级会员"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.fragment.A_Fragmen">
<!-- TODO: Update blank fragment layout -->
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
2
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.fragment.B_Fragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment"/>
</FrameLayout>
3
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="alice.bw.com.day01zhoukao.fragment.C_Fragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment"/>
</FrameLayout>
item_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/qq_img"
android:layout_width="100dp"
android:layout_height="100dp"/>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"/>
</LinearLayout>