Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencies {
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.bumptech.glide:glide:4.5.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activity.DeputyActivity"
android:label="@string/deputy"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
49 changes: 46 additions & 3 deletions app/src/main/java/com/nd/frt/recentconversation/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package com.nd.frt.recentconversation;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.nd.frt.recentconversation.activity.DeputyActivity;
import com.nd.frt.recentconversation.adapter.UserAdapter;
import com.nd.frt.recentconversation.model.UserInfo;
import com.nd.frt.recentconversation.service.UserInfoService;
Expand All @@ -13,16 +19,53 @@

public class MainActivity extends AppCompatActivity {

private UserAdapter mUserAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UserInfoService userInfoService = new UserInfoService();
List<UserInfo> userInfos = userInfoService.getUserInfos(this);
UserAdapter userAdapter = new UserAdapter(userInfos);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rvRecyclerView);
mUserAdapter = new UserAdapter(userInfos);
RecyclerView recyclerView = findViewById(R.id.rvRecyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(userAdapter);
recyclerView.setAdapter(mUserAdapter);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.item_add) {
UserInfo userInfo = new UserInfo();
userInfo.userName = "zenghongwei";
userInfo.content = "1204322350@qq.com";
userInfo.avatarUrl = "https://randomuser.me/api/portraits/women/64.jpg";
mUserAdapter.add(userInfo);
Toast.makeText(this, R.string.item_add, Toast.LENGTH_SHORT).show();
return true;
} else if (itemId == R.id.item_delete) {
Toast.makeText(this, R.string.item_delete, Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == R.string.txt_modify) {
if (data != null) {
UserInfo userInfo = (UserInfo) data.getSerializableExtra(DeputyActivity.PARAM_USER_INFO);
int index = data.getIntExtra(DeputyActivity.PARAM_USER_INDEX,0);
mUserAdapter.edit(index, userInfo);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.nd.frt.recentconversation.activity;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.nd.frt.recentconversation.R;
import com.nd.frt.recentconversation.model.UserInfo;

public class DeputyActivity extends AppCompatActivity {

public static final String PARAM_USER_INFO = "user_info";
public static final String PARAM_USER_INDEX = "user_index";
private UserInfo mUserInfo;
private int mIndex;
private EditText mEditText;

public static void start(Activity context, int index, UserInfo userInfo, int requestCode) {
Intent starter = new Intent(context, DeputyActivity.class);
starter.putExtra(PARAM_USER_INFO, userInfo);
starter.putExtra(PARAM_USER_INDEX, index);
context.startActivityForResult(starter, requestCode);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_deputy);
ActionBar supportActionBar = getSupportActionBar();
Intent intent = getIntent();
mUserInfo = (UserInfo) intent.getSerializableExtra(PARAM_USER_INFO);
mIndex = intent.getIntExtra(PARAM_USER_INDEX, 0);
assert supportActionBar != null;
supportActionBar.setDisplayHomeAsUpEnabled(true);
supportActionBar.setTitle(mUserInfo.userName);
supportActionBar.setSubtitle(mUserInfo.content);
mEditText = findViewById(R.id.et_username);
findViewById(R.id.bt_modify)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Editable text = mEditText.getText();
mUserInfo.userName = text.toString();
Intent intentResult = new Intent();
intentResult.putExtra(PARAM_USER_INDEX, mIndex);
intentResult.putExtra(PARAM_USER_INFO, mUserInfo);
setResult(R.string.txt_modify, intentResult);
Toast.makeText(DeputyActivity.this, R.string.txt_modify, Toast.LENGTH_SHORT).show();
finish();
}
});
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.nd.frt.recentconversation.adapter;

import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
Expand All @@ -10,6 +11,7 @@

import com.bumptech.glide.Glide;
import com.nd.frt.recentconversation.R;
import com.nd.frt.recentconversation.activity.DeputyActivity;
import com.nd.frt.recentconversation.model.UserInfo;
import com.nd.frt.recentconversation.viewholder.UserViewHolder;

Expand All @@ -19,6 +21,7 @@ public class UserAdapter extends RecyclerView.Adapter<UserViewHolder> {

public static final String TAG = UserAdapter.class.getSimpleName();

private static final int REQUEST_EDIT_USER_INFO = 0x1001;
private List<UserInfo> mUserInfos;

public UserAdapter(List<UserInfo> userInfos) {
Expand All @@ -35,7 +38,7 @@ public UserViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
}

@Override
public void onBindViewHolder(@NonNull UserViewHolder userViewHolder, int position) {
public void onBindViewHolder(@NonNull UserViewHolder userViewHolder, final int position) {
Log.d(TAG, "onBindViewHolder");
final UserInfo userInfo = mUserInfos.get(position);
Glide.with(userViewHolder.mIvAvatar).load(userInfo.avatarUrl).into(userViewHolder.mIvAvatar);
Expand All @@ -47,10 +50,26 @@ public void onClick(View v) {
Toast.makeText(v.getContext(), v.getContext().getString(R.string.hello), Toast.LENGTH_LONG).show();
}
});
userViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DeputyActivity.start((Activity) v.getContext() ,position,userInfo,REQUEST_EDIT_USER_INFO);
}
});
}

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

public void add(UserInfo userInfo){
mUserInfos.add(userInfo);
notifyDataSetChanged();
}

public void edit(int index,UserInfo userInfo){
mUserInfos.set(index,userInfo);
notifyDataSetChanged();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.nd.frt.recentconversation.model;

public class UserInfo {
import java.io.Serializable;

public class UserInfo implements Serializable {

public String avatarUrl;
public String userName;
Expand Down
21 changes: 21 additions & 0 deletions app/src/main/res/layout/activity_deputy.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<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"
android:orientation="vertical"
tools:context=".activity.DeputyActivity">

<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/et_input" />

<Button
android:id="@+id/bt_modify"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txt_modify" />

</LinearLayout>
16 changes: 16 additions & 0 deletions app/src/main/res/menu/main.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item
android:id="@+id/item_add"
android:icon="@mipmap/ic_launcher"
android:orderInCategory="1"
android:title="@string/add" />

<item
android:id="@+id/item_delete"
android:icon="@mipmap/ic_launcher"
android:orderInCategory="1"
android:title="@string/delete" />

</menu>
7 changes: 7 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,11 @@
<string name="app_name">RecentConversationDemo</string>
<string name="z">dsdsdsdsdsdsdsdsdsa</string>
<string name="hello">Hello</string>
<string name="item_add">点击添加</string>
<string name="item_delete">点击删除</string>
<string name="add">添加</string>
<string name="delete">删除</string>
<string name="deputy">DeputyActivity</string>
<string name="et_input">请输入...</string>
<string name="txt_modify">修改</string>
</resources>