pvhoaivh4394 / demo

0 stars 0 forks source link

emaildemo #2

Open pvhoaivh4394 opened 7 years ago

pvhoaivh4394 commented 7 years ago

//DetailFragment package com.example.mac.emaildemo;

import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;

/**

public class DetailFragment extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.detail, container, false);
    MyEmail myEmail = getArguments().getParcelable("myEmail");
    TextView tvID = (TextView) v.findViewById(R.id.tvID);
    tvID.setText(String.valueOf(myEmail.getId()));
    TextView tvSubject = (TextView) v.findViewById(R.id.tvSubject);
    tvSubject.setText(myEmail.getSubject());
    TextView tvContent = (TextView) v.findViewById(R.id.tvContent);
    tvContent.setText(myEmail.getContent());

    return v;
}

}

pvhoaivh4394 commented 7 years ago

package com.example.mac.emaildemo;

import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; 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.util.ArrayList; import java.util.List;

/**

public class ListFragment extends Fragment implements MyAdapter.MyOnClickListener {

Context context;

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    this.context = context;
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.list, container, false);

    RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.recyclerview);

// List data = MockData.getData(); ArrayList data = getArguments().getParcelableArrayList("data"); MyAdapter adapter = new MyAdapter(context, data); adapter.setMyOnClickListener(this); recyclerView.setAdapter(adapter); LinearLayoutManager layoutManager = new LinearLayoutManager(context); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager);

    return v;
}

@Override
public void onClick(int position) {
    ((MainActivity) context).replaceFragment(position);
}

}

pvhoaivh4394 commented 7 years ago

package com.example.mac.emaildemo;

import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.util.Log;

import java.util.ArrayList; import java.util.List;

import static android.R.attr.data; import static android.R.attr.fragment;

public class MainActivity extends AppCompatActivity {

private static final String TAG = MainActivity.class.getSimpleName();

boolean orientation;
ArrayList<MyEmail> data = MockData.getData();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    orientation = getResources().getBoolean(R.bool.orientation);
    Log.d(TAG, "onCreate: " + orientation);

    if (orientation) {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ListFragment fragment = new ListFragment();
        Bundle bundle = new Bundle();
        bundle.putParcelableArrayList("data", data);

        fragment.setArguments(bundle);
        ft.replace(R.id.frame1, fragment, "F1");
        ft.addToBackStack(null);
        ft.commit();
    } else {

    }
}

public void replaceFragment(int position) {
    if (orientation) {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        DetailFragment fragmentDetail = new DetailFragment();
        Bundle bundle = new Bundle();
        MyEmail myEmail = MockData.getEmailById(position, data);
        bundle.putParcelable("myEmail", myEmail);

        fragmentDetail.setArguments(bundle);
        ft.replace(R.id.frame1, fragmentDetail, "F2");
        ft.addToBackStack(null);
        ft.commit();
    } else {

    }
}

}

pvhoaivh4394 commented 7 years ago

package com.example.mac.emaildemo;

import java.util.ArrayList; import java.util.List;

/**

public class MockData {

public static ArrayList<MyEmail> getData() {
    ArrayList<MyEmail> list = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
        list.add(new MyEmail(i, "Subject " + i, "Content " + i));
    }

    return list;
}

public static MyEmail getEmailById(int id, List<MyEmail> list) {
    return list.get(id);
}

}

pvhoaivh4394 commented 7 years ago

package com.example.mac.emaildemo;

import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;

import java.util.List;

import static android.media.CamcorderProfile.get;

/**

public class MyAdapter extends RecyclerView.Adapter {

private static final String TAG = MyAdapter.class.getSimpleName();
Context context;
List<MyEmail> data;

public MyAdapter(Context context, List<MyEmail> data) {
    this.context = context;
    this.data = data;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.item_list, parent, false);

    return new MyViewHolder(v);
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    MyEmail myEmail = data.get(position);
    Log.d(TAG, "onBindViewHolder: " + myEmail);
    holder.tvID.setText(String.valueOf(myEmail.getId()));
    holder.tvSubject.setText(myEmail.getSubject());
}

@Override
public int getItemCount() {
    return data.size();
}

class MyViewHolder extends RecyclerView.ViewHolder {
    TextView tvID;
    TextView tvSubject;

    public MyViewHolder(View itemView) {
        super(itemView);
        tvID = (TextView) itemView.findViewById(R.id.tvID);
        tvSubject = (TextView) itemView.findViewById(R.id.tvSubject);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myOnClickListener.onClick(getAdapterPosition());
                Log.d(TAG, "onClick: " + getLayoutPosition() + ":" + getAdapterPosition());
            }
        });
    }
}

MyOnClickListener myOnClickListener;

public void setMyOnClickListener(MyOnClickListener myOnClickListener) {
    this.myOnClickListener = myOnClickListener;
}

interface MyOnClickListener {
    void onClick(int position);
}

}

pvhoaivh4394 commented 7 years ago

package com.example.mac.emaildemo;

import android.os.Parcel; import android.os.Parcelable;

/**

public class MyEmail implements Parcelable {

private int id;
private String subject;
private String content;

public MyEmail(int id, String subject, String content) {
    this.id = id;
    this.subject = subject;
    this.content = content;
}

protected MyEmail(Parcel in) {
    id = in.readInt();
    subject = in.readString();
    content = in.readString();
}

public static final Creator<MyEmail> CREATOR = new Creator<MyEmail>() {
    @Override
    public MyEmail createFromParcel(Parcel in) {
        return new MyEmail(in);
    }

    @Override
    public MyEmail[] newArray(int size) {
        return new MyEmail[size];
    }
};

@Override
public String toString() {
    return id + ":" + subject + ":" + content;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getSubject() {
    return subject;
}

public void setSubject(String subject) {
    this.subject = subject;
}

public String getContent() {
    return content;
}

public void setContent(String content) {
    this.content = content;
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {
    parcel.writeInt(id);
    parcel.writeString(subject);
    parcel.writeString(content);
}

}

pvhoaivh4394 commented 7 years ago

xml

pvhoaivh4394 commented 7 years ago

layout/activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.mac.emaildemo.MainActivity">

<FrameLayout
    android:id="@+id/frame1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

pvhoaivh4394 commented 7 years ago

layout/detail.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">

<TextView
    android:id="@+id/lblID"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="ID:"
    android:textSize="20sp"/>
<TextView
    android:id="@+id/tvID"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="10"
    android:textSize="20sp"
    android:layout_toRightOf="@+id/lblID"
    android:layout_alignLeft="@+id/tvContent"/>
<TextView
    android:id="@+id/lblSubject"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Subject:"
    android:textSize="20sp"
    android:layout_below="@+id/lblID"/>
<TextView
    android:id="@+id/tvSubject"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Subject"
    android:textSize="20sp"
    android:layout_toRightOf="@+id/lblSubject"
    android:layout_below="@+id/tvID"
    android:layout_alignLeft="@+id/tvContent"/>
<TextView
    android:id="@+id/lblContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Content:"
    android:textSize="20sp"
    android:layout_below="@+id/lblSubject"/>
<TextView
    android:id="@+id/tvContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Content"
    android:textSize="20sp"
    android:layout_toRightOf="@+id/lblContent"
    android:layout_below="@+id/tvSubject"
    android:layout_marginLeft="20dp"/>

pvhoaivh4394 commented 7 years ago

/item_list.xml <?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">

<TextView
    android:id="@+id/tvID"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="10"
    android:layout_weight="1"
    android:textSize="20sp"/>

<TextView
    android:id="@+id/tvSubject"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Subject"
    android:layout_weight="4"
    android:textSize="20sp"/>

pvhoaivh4394 commented 7 years ago

/list.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

pvhoaivh4394 commented 7 years ago

layout-land/activity_main.xml <?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="match_parent">

<FrameLayout
    android:id="@+id/frame1"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"/>

<FrameLayout
    android:id="@+id/frame2"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="3"/>

pvhoaivh4394 commented 7 years ago

values/value.xml <?xml version="1.0" encoding="utf-8"?>

true

tao them 1 cai o che do landscape