Open pvhoaivh4394 opened 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
return v;
}
@Override
public void onClick(int position) {
((MainActivity) context).replaceFragment(position);
}
}
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 {
}
}
}
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);
}
}
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);
}
}
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);
}
}
xml
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"/>
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"/>
/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"/>
/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"/>
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"/>
values/value.xml <?xml version="1.0" encoding="utf-8"?>
tao them 1 cai o che do landscape
//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 {
}