Android实现侧滑-添加数据和toolbar等功能

版权声明:个人见解,希望可以帮助大家,共同进步. https://blog.csdn.net/weixin_40783315/article/details/78516688

首先是主代码块

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>


猜你喜欢

转载自blog.csdn.net/weixin_40783315/article/details/78516688