package com.tejia.lijin.app.ui.category.categoryrevise;
|
|
import android.content.SharedPreferences;
|
import android.os.Bundle;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
import android.view.KeyEvent;
|
import android.view.View;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.tejia.lijin.app.ShoppingApplication;
|
import com.tejia.lijin.app.util.user.UserUtil;
|
import com.wpc.library.okhttp.OkHttpUtils;
|
import com.wpc.library.recyclerviewhelper.ItemDragHelperCallback;
|
import com.wpc.library.util.common.StringUtils;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.entity.ChannelEntity;
|
import com.tejia.lijin.app.ui.BaseActivity;
|
import com.tejia.lijin.app.util.TopStatusSettings;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.List;
|
|
/**
|
* 分类修改
|
*/
|
public class CategoryReviseActivity extends BaseActivity implements View.OnClickListener {
|
private RecyclerView mRecy;
|
private TextView tv_middle, tv_right;
|
private List<ChannelEntity> items;
|
private List<ChannelEntity> items2;
|
int minNum;
|
int maxNum;
|
|
private String urlTag1 = "navbar/getUserItems";
|
private String urlTag2 = "navbar/saveUserItems";
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_category_revise);
|
TopStatusSettings.setStatusViewAndDeepColor(this);
|
mRecy = findViewById(R.id.recy);
|
tv_middle = findViewById(R.id.tv_top_bar_middle);
|
tv_right = findViewById(R.id.tv_top_bar_right);
|
|
tv_middle.setText("分类");
|
tv_right.setText("编辑");
|
|
findViewById(R.id.tv_top_bar_left).setOnClickListener(this);
|
getUserItems();
|
}
|
|
private ChannelAdapter adapter;
|
|
/*
|
* 获取分类列表
|
*/
|
private void getUserItems() {
|
ShoppingApi.getUserItems(CategoryReviseActivity.this, UserUtil.getUid(ShoppingApplication.application), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optInt("code") == 0) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
int nonCount = jsonObject.optJSONObject("data").optInt("nonCount");
|
minNum = jsonObject.optJSONObject("data").optInt("min");
|
maxNum = jsonObject.optJSONObject("data").optInt("max");
|
|
items = gson.fromJson(jsonObject.optJSONObject("data")
|
.optJSONArray("listExist").toString(), new TypeToken<List<ChannelEntity>>() {
|
}.getType());
|
items2 = gson.fromJson(jsonObject.optJSONObject("data")
|
.optJSONArray("listExist").toString(), new TypeToken<List<ChannelEntity>>() {
|
}.getType());
|
JSONArray jsonArray = new JSONArray();
|
for (int i = 0; i < items.size(); i++) {
|
if (!StringUtils.isEmpty(items.get(i).getId()))
|
jsonArray.add(items.get(i).getId());
|
}
|
final List<ChannelEntity> otherItems = gson.fromJson(jsonObject.optJSONObject("data")
|
.optJSONArray("listItems").toString(), new TypeToken<List<ChannelEntity>>() {
|
}.getType());
|
|
GridLayoutManager manager = new GridLayoutManager(CategoryReviseActivity.this, 4);
|
mRecy.setLayoutManager(manager);
|
|
ItemDragHelperCallback callback = new ItemDragHelperCallback(nonCount + 1);
|
final ItemTouchHelper helper = new ItemTouchHelper(callback);
|
helper.attachToRecyclerView(mRecy);
|
|
adapter = new ChannelAdapter(CategoryReviseActivity.this, tv_right,
|
helper, items, otherItems, nonCount, minNum, maxNum);
|
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
@Override
|
public int getSpanSize(int position) {
|
int viewType = adapter.getItemViewType(position);
|
return viewType == ChannelAdapter.TYPE_MY || viewType == ChannelAdapter.TYPE_OTHER ? 1 : 4;
|
}
|
});
|
mRecy.setAdapter(adapter);
|
|
adapter.setOnMyChannelItemClickListener(new ChannelAdapter.OnMyChannelItemClickListener() {
|
@Override
|
public void onItemClick(View v, int position) {
|
Toast.makeText(CategoryReviseActivity.this, items.get(position).getName(), Toast.LENGTH_SHORT).show();
|
}
|
});
|
}
|
}
|
});
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left:
|
saveData();
|
break;
|
}
|
}
|
|
/*
|
保存已经编辑完成的导航栏数据
|
*/
|
private void saveData() {
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
JSONArray jsonArray = new JSONArray();
|
if (items != null && items.size() > 0) {
|
for (int i = 0; i < items.size(); i++) {
|
jsonArray.add(items.get(i).getId());
|
}
|
|
String ids = jsonArray.toJSONString();
|
JSONArray jsonArray2 = new JSONArray();
|
for (int i = 0; i < items2.size(); i++) {
|
jsonArray2.add(items2.get(i).getId());
|
}
|
String changeIds = jsonArray2.toJSONString();
|
if (!ids.equalsIgnoreCase(changeIds)) {
|
sp.edit().putString("myCategory", ids).commit();
|
ShoppingApi.saveUserItems(CategoryReviseActivity.this, UserUtil.getUid(ShoppingApplication.application), ids, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
finish();
|
}
|
});
|
} else {
|
finish();
|
}
|
}
|
}
|
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
saveData();
|
return true;
|
} else {
|
return super.onKeyDown(keyCode, event);
|
}
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
OkHttpUtils.getInstance().cancelTag(urlTag1);
|
OkHttpUtils.getInstance().cancelTag(urlTag2);
|
}
|
}
|