1145873331@qq.com 6 anni fa
parent
commit
ee4596d734

+ 1 - 1
app/build.gradle

221
//    compile files('libs/badgeview.jar')
221
//    compile files('libs/badgeview.jar')
222
    compile files('libs/mframework.jar')
222
    compile files('libs/mframework.jar')
223
    compile files('libs/picasso-2.5.2.jar')
223
    compile files('libs/picasso-2.5.2.jar')
224
    compile files('libs/httpmime-4.3.5.jar')
224
//    compile files('libs/httpmime-4.3.5.jar')
225
    compile project(':autolayout')
225
    compile project(':autolayout')
226
    compile files('libs/universal-image-loader-1.9.1.jar')
226
    compile files('libs/universal-image-loader-1.9.1.jar')
227
    compile files('libs/bugly_1.2.9_release.jar')
227
    compile files('libs/bugly_1.2.9_release.jar')

+ 4 - 1
app/src/main/AndroidManifest.xml

993
        <activity
993
        <activity
994
            android:name=".activity.PublishTopicActivity"
994
            android:name=".activity.PublishTopicActivity"
995
            android:screenOrientation="portrait"
995
            android:screenOrientation="portrait"
996
            android:windowSoftInputMode="stateVisible|adjustResize" />
997
        <activity
998
            android:name=".activity.TopicActivity"
999
            android:screenOrientation="portrait"
996
            android:windowSoftInputMode="adjustPan" />
1000
            android:windowSoftInputMode="adjustPan" />
997
        <activity android:name=".activity.TopicActivity" />
998
    </application>
1001
    </application>
999
1002
1000
</manifest>
1003
</manifest>

+ 0 - 1
app/src/main/java/com/electric/chargingpile/activity/LoginActivity.java

42
import org.json.JSONException;
42
import org.json.JSONException;
43
import org.json.JSONObject;
43
import org.json.JSONObject;
44
44
45
import java.io.IOException;
46
import java.net.URLEncoder;
45
import java.net.URLEncoder;
47
46
48
import okhttp3.Call;
47
import okhttp3.Call;

+ 0 - 4
app/src/main/java/com/electric/chargingpile/activity/MainScanActivity.java

45
import com.electric.chargingpile.view.WaveView;
45
import com.electric.chargingpile.view.WaveView;
46
import com.google.gson.Gson;
46
import com.google.gson.Gson;
47
import com.google.gson.reflect.TypeToken;
47
import com.google.gson.reflect.TypeToken;
48
import com.tencent.bugly.crashreport.BuglyLog;
49
import com.tencent.bugly.crashreport.CrashReport;
48
import com.tencent.bugly.crashreport.CrashReport;
50
import com.umeng.analytics.MobclickAgent;
49
import com.umeng.analytics.MobclickAgent;
51
import com.zhy.http.okhttp.OkHttpUtils;
50
import com.zhy.http.okhttp.OkHttpUtils;
52
import com.zhy.http.okhttp.callback.StringCallback;
51
import com.zhy.http.okhttp.callback.StringCallback;
53
52
54
import java.io.IOException;
55
import java.net.URLEncoder;
53
import java.net.URLEncoder;
56
import java.text.SimpleDateFormat;
54
import java.text.SimpleDateFormat;
57
import java.util.ArrayList;
55
import java.util.ArrayList;
58
import java.util.HashMap;
59
import java.util.List;
56
import java.util.List;
60
import java.util.Map;
61
import java.util.TimeZone;
57
import java.util.TimeZone;
62
import java.util.Timer;
58
import java.util.Timer;
63
import java.util.TimerTask;
59
import java.util.TimerTask;

+ 54 - 35
app/src/main/java/com/electric/chargingpile/activity/PublishTopicActivity.java

12
import android.os.Bundle;
12
import android.os.Bundle;
13
import android.os.Environment;
13
import android.os.Environment;
14
import android.provider.MediaStore;
14
import android.provider.MediaStore;
15
import android.text.Editable;
16
import android.text.Html;
17
import android.text.TextWatcher;
15
import android.view.View;
18
import android.view.View;
16
import android.view.View.OnClickListener;
19
import android.view.View.OnClickListener;
17
import android.widget.EditText;
20
import android.widget.EditText;
20
import android.widget.Toast;
23
import android.widget.Toast;
21
24
22
import com.electric.chargingpile.R;
25
import com.electric.chargingpile.R;
26
import com.electric.chargingpile.data.TalkRecommendBean;
23
import com.electric.chargingpile.util.BarColorUtil;
27
import com.electric.chargingpile.util.BarColorUtil;
24
import com.electric.chargingpile.view.MyGridView;
28
import com.electric.chargingpile.view.MyGridView;
25
import com.umeng.analytics.MobclickAgent;
29
import com.umeng.analytics.MobclickAgent;
33
import pub.devrel.easypermissions.AppSettingsDialog;
37
import pub.devrel.easypermissions.AppSettingsDialog;
34
import pub.devrel.easypermissions.EasyPermissions;
38
import pub.devrel.easypermissions.EasyPermissions;
35
39
36
public class PublishTopicActivity extends Activity implements OnClickListener, EasyPermissions.PermissionCallbacks {
40
public class PublishTopicActivity extends Activity implements OnClickListener {
37
    private ImageView ivBack, icon_scan;
41
    private ImageView ivBack, icon_scan;
38
    private TextView tvVersion, tv_banquan, tv_call, android;
42
    private TextView tvVersion, tv_banquan, tv_call, android;
39
    private String app_version;
43
    private String app_version;
46
    private TextView mPublishtopicChooseTopic;
50
    private TextView mPublishtopicChooseTopic;
47
    private TextView mPublishtopicChoosePreview;
51
    private TextView mPublishtopicChoosePreview;
48
    private TextView mPublishtopicWordNum;
52
    private TextView mPublishtopicWordNum;
53
    private ImageView mPublishTopicDe;
49
54
50
55
51
    @Override
56
    @Override
65
        mPublishtopicChooseTopic = (TextView) findViewById(R.id.publishtopic_choose_topic);
70
        mPublishtopicChooseTopic = (TextView) findViewById(R.id.publishtopic_choose_topic);
66
        mPublishtopicChoosePreview = (TextView) findViewById(R.id.publishtopic_choose_preview);
71
        mPublishtopicChoosePreview = (TextView) findViewById(R.id.publishtopic_choose_preview);
67
        mPublishtopicWordNum = (TextView) findViewById(R.id.publishtopic_word_num);
72
        mPublishtopicWordNum = (TextView) findViewById(R.id.publishtopic_word_num);
73
        mPublishTopicDe = (ImageView) findViewById(R.id.publishtopic_choose_topic_de);
74
75
        mPublishtopicCon.addTextChangedListener(new TextWatcher() {
76
            @Override
77
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
78
79
            }
80
81
            @Override
82
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
83
84
85
            }
86
87
            @Override
88
            public void afterTextChanged(Editable editable) {
89
                int length = editable.length();
90
                if (length > 500) {
91
                    mPublishtopicWordNum.setText(Html.fromHtml("<font  color=\"#FF4E4E\">" + length + "</font>/500"));
92
                } else {
93
                    mPublishtopicWordNum.setText(length + "/500");
94
                }
95
            }
96
        });
97
68
98
69
        mPublishtopicBack.setOnClickListener(this);
99
        mPublishtopicBack.setOnClickListener(this);
70
        mPublishtopicPublish.setOnClickListener(this);
100
        mPublishtopicPublish.setOnClickListener(this);
71
        mPublishtopicChoosePreview.setOnClickListener(this);
101
        mPublishtopicChoosePreview.setOnClickListener(this);
72
        mPublishtopicChooseTopic.setOnClickListener(this);
102
        mPublishtopicChooseTopic.setOnClickListener(this);
103
        mPublishTopicDe.setOnClickListener(this);
73
    }
104
    }
74
105
75
106
80
                finish();
111
                finish();
81
                break;
112
                break;
82
            case R.id.publishtopic_publish:
113
            case R.id.publishtopic_publish:
83
                telTask();
84
                break;
114
                break;
85
115
86
            case R.id.publishtopic_choose_topic:
116
            case R.id.publishtopic_choose_topic:
87
                startActivity(new Intent(this, TopicActivity.class));
117
                startActivityForResult(new Intent(this, TopicActivity.class), reqTopic);
88
                break;
118
                break;
89
            case R.id.publishtopic_choose_preview:
119
            case R.id.publishtopic_choose_preview:
90
                break;
120
                break;
121
            case R.id.publishtopic_choose_topic_de:
122
                mPublishtopicChooseTopic.setText("# 选择话题");
123
                mPublishTopicDe.setVisibility(View.GONE);
124
                talkRecommendBean = null;
125
                break;
91
            default:
126
            default:
92
                break;
127
                break;
93
        }
128
        }
94
    }
129
    }
95
130
131
    final int reqTopic = -100;
132
133
    TalkRecommendBean talkRecommendBean = null;
134
135
    @Override
136
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
137
        if (requestCode == -100 && resultCode == -100) {
138
            talkRecommendBean = (TalkRecommendBean) data.getSerializableExtra("topic");
139
            if (talkRecommendBean != null) {
140
                mPublishtopicChooseTopic.setText("# " + talkRecommendBean.name);
141
                mPublishTopicDe.setVisibility(View.VISIBLE);
142
            }
143
        }
144
        super.onActivityResult(requestCode, resultCode, data);
145
    }
146
96
    @Override
147
    @Override
97
    protected void onResume() {
148
    protected void onResume() {
98
        super.onResume();
149
        super.onResume();
104
        super.onPause();
155
        super.onPause();
105
        MobclickAgent.onPause(this);
156
        MobclickAgent.onPause(this);
106
    }
157
    }
107
108
109
    @Override
110
    public void onPermissionsGranted(int requestCode, List<String> perms) {
111
112
    }
113
114
    @Override
115
    public void onPermissionsDenied(int requestCode, List<String> perms) {
116
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
117
            new AppSettingsDialog.Builder(PublishTopicActivity.this,
118
                    "该功能需要开启拨号权限,是否前往开启?").build().show();
119
        }
120
    }
121
122
    private boolean hasCallPhonePermission() {
123
        return EasyPermissions.hasPermissions(this, Manifest.permission.CALL_PHONE);
124
    }
125
126
    @AfterPermissionGranted(RC_CALL_PERM)
127
    public void telTask() {
128
        if (hasCallPhonePermission()) {
129
130
        } else {
131
            // Ask for one permission
132
            EasyPermissions.requestPermissions(
133
                    this,
134
                    "该功能需要开启拨号权限,是否前往开启?",
135
                    RC_CALL_PERM,
136
                    Manifest.permission.CALL_PHONE);
137
        }
138
    }
139
}
158
}

+ 50 - 15
app/src/main/java/com/electric/chargingpile/activity/TopicActivity.java

3
import android.Manifest;
3
import android.Manifest;
4
import android.app.Activity;
4
import android.app.Activity;
5
import android.content.Context;
5
import android.content.Context;
6
import android.content.Intent;
6
import android.os.Bundle;
7
import android.os.Bundle;
7
import android.support.v7.widget.LinearLayoutManager;
8
import android.support.v7.widget.LinearLayoutManager;
8
import android.support.v7.widget.RecyclerView;
9
import android.support.v7.widget.RecyclerView;
22
import com.electric.chargingpile.adapter.TopicAdapter;
23
import com.electric.chargingpile.adapter.TopicAdapter;
23
import com.electric.chargingpile.application.MainApplication;
24
import com.electric.chargingpile.application.MainApplication;
24
import com.electric.chargingpile.data.TalkRecommendBean;
25
import com.electric.chargingpile.data.TalkRecommendBean;
26
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
25
import com.electric.chargingpile.util.BarColorUtil;
27
import com.electric.chargingpile.util.BarColorUtil;
26
import com.electric.chargingpile.util.JsonUtils;
28
import com.electric.chargingpile.util.JsonUtils;
27
import com.electric.chargingpile.util.ToastUtil;
29
import com.electric.chargingpile.util.ToastUtil;
78
        mTopicNotCon = (TextView) findViewById(R.id.topic_not_con);
80
        mTopicNotCon = (TextView) findViewById(R.id.topic_not_con);
79
        mTopicRetryLl = (LinearLayout) findViewById(R.id.topic_retry_ll);
81
        mTopicRetryLl = (LinearLayout) findViewById(R.id.topic_retry_ll);
80
        mTopicRetry = (TextView) findViewById(R.id.topic_retry);
82
        mTopicRetry = (TextView) findViewById(R.id.topic_retry);
81
        mTopicRv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, true));
83
        mTopicRv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
82
84
85
        mTopicInputEnd.setOnClickListener(this);
83
        topicAdapter = new TopicAdapter(this);
86
        topicAdapter = new TopicAdapter(this);
84
        mTopicRv.setAdapter(topicAdapter);
87
        mTopicRv.setAdapter(topicAdapter);
85
88
86
89
        topicAdapter.setRecyclerItemTypeClickListener(new RecyclerItemTypeClickListener() {
90
            @Override
91
            public void onItemClickListener(int position, int index) {
92
                TalkRecommendBean item = topicAdapter.getItem(position);
93
                Intent intent = new Intent();
94
                intent.putExtra("topic", item);
95
                setResult(-100, intent);
96
                finish();
97
            }
98
        });
87
        mTopicBack.setOnClickListener(this);
99
        mTopicBack.setOnClickListener(this);
88
        mTopicCon.addTextChangedListener(new TextWatcher() {
100
        mTopicCon.addTextChangedListener(new TextWatcher() {
89
            @Override
101
            @Override
93
105
94
            @Override
106
            @Override
95
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
107
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
96
                if (i2 == 0) {
97
                    recommentTopic();
98
                } else {
99
                    searchTopic(charSequence);
100
                }
108
101
            }
109
            }
102
110
103
            @Override
111
            @Override
104
            public void afterTextChanged(Editable editable) {
112
            public void afterTextChanged(Editable editable) {
113
                if (editable.length() == 0) {
114
                    recommentTopic();
115
                } else {
116
                    searchTopic(editable.toString());
105
117
118
                }
119
                mTopicInputEnd.setVisibility(editable.length() == 0 ? View.GONE : View.VISIBLE);
106
            }
120
            }
107
        });
121
        });
108
    }
122
    }
118
        OkHttpUtils.get().params(map).url(url).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() {
132
        OkHttpUtils.get().params(map).url(url).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() {
119
            @Override
133
            @Override
120
            public void onError(Call call, Exception e) {
134
            public void onError(Call call, Exception e) {
135
                mTopicRetryLl.setVisibility(View.VISIBLE);
136
                mTopicNotCon.setVisibility(View.GONE);
137
                mTopicRv.setVisibility(View.GONE);
121
            }
138
            }
122
139
123
            @Override
140
            @Override
125
                String rtnCode = JsonUtils.getKeyResult(response, "code");
142
                String rtnCode = JsonUtils.getKeyResult(response, "code");
126
                if ("1000".equals(rtnCode)) {
143
                if ("1000".equals(rtnCode)) {
127
                    String rtnMsg = JsonUtils.getKeyResult(response, "data");
144
                    String rtnMsg = JsonUtils.getKeyResult(response, "data");
128
                    ArrayList<TalkRecommendBean> qadata = (ArrayList<TalkRecommendBean>) JsonUtils.parseToObjectList(rtnMsg, TalkRecommendBean.class);
129
                    topicAdapter.setType(TopicAdapter.RECOMENT_TYPE);
130
131
                    topicAdapter.addData(qadata);
145
                    List<TalkRecommendBean> qadata = JsonUtils.parseToObjectList(rtnMsg, TalkRecommendBean.class);
146
                    mTopicRetryLl.setVisibility(View.GONE);
147
                    if (qadata.size() == 0) {
148
                        mTopicNotCon.setVisibility(View.VISIBLE);
149
                        mTopicRv.setVisibility(View.GONE);
150
                    } else {
151
                        mTopicNotCon.setVisibility(View.GONE);
152
                        mTopicRv.setVisibility(View.VISIBLE);
153
                        topicAdapter.addData(TopicAdapter.RECOMENT_TITLE, qadata);
154
                    }
132
                }
155
                }
133
            }
156
            }
134
        });
157
        });
151
                .execute(new StringCallback() {
174
                .execute(new StringCallback() {
152
                    @Override
175
                    @Override
153
                    public void onError(Call call, Exception e) {
176
                    public void onError(Call call, Exception e) {
154
                        ToastUtil.showToast(TopicActivity.this, "加载失败,请重试", Toast.LENGTH_SHORT);
155
177
                        mTopicRetryLl.setVisibility(View.VISIBLE);
178
                        mTopicNotCon.setVisibility(View.GONE);
179
                        mTopicRv.setVisibility(View.GONE);
156
                    }
180
                    }
157
181
158
                    @Override
182
                    @Override
162
                            String rtnMsg = JsonUtils.getKeyResult(response, "data");
186
                            String rtnMsg = JsonUtils.getKeyResult(response, "data");
163
                            List<TalkRecommendBean> qadata = JsonUtils
187
                            List<TalkRecommendBean> qadata = JsonUtils
164
                                    .parseToObjectList(rtnMsg, TalkRecommendBean.class);
188
                                    .parseToObjectList(rtnMsg, TalkRecommendBean.class);
165
                            topicAdapter.setType(TopicAdapter.RECOMENT_ITEM);
166
                            topicAdapter.addData(qadata);
189
                            mTopicRetryLl.setVisibility(View.GONE);
190
                            if (qadata.size() == 0) {
191
                                mTopicNotCon.setVisibility(View.VISIBLE);
192
                                mTopicRv.setVisibility(View.GONE);
193
                            } else {
194
                                mTopicNotCon.setVisibility(View.GONE);
195
                                mTopicRv.setVisibility(View.VISIBLE);
196
                            }
197
198
                            topicAdapter.addData(TopicAdapter.RECOMENT_ITEM, qadata);
167
                        }
199
                        }
168
                    }
200
                    }
169
                });
201
                });
179
            case R.id.publishtopic_publish:
211
            case R.id.publishtopic_publish:
180
                telTask();
212
                telTask();
181
                break;
213
                break;
214
            case R.id.topic_input_end:
215
                mTopicCon.setText("");
216
                break;
182
            default:
217
            default:
183
                break;
218
                break;
184
        }
219
        }

+ 56 - 68
app/src/main/java/com/electric/chargingpile/adapter/TopicAdapter.java

5
import android.graphics.Bitmap;
5
import android.graphics.Bitmap;
6
import android.support.annotation.NonNull;
6
import android.support.annotation.NonNull;
7
import android.support.v7.widget.RecyclerView;
7
import android.support.v7.widget.RecyclerView;
8
import android.text.Html;
8
import android.text.TextUtils;
9
import android.text.TextUtils;
9
import android.util.DisplayMetrics;
10
import android.util.DisplayMetrics;
10
import android.util.Log;
11
import android.util.Log;
15
import android.widget.BaseAdapter;
16
import android.widget.BaseAdapter;
16
import android.widget.Button;
17
import android.widget.Button;
17
import android.widget.ImageView;
18
import android.widget.ImageView;
19
import android.widget.LinearLayout;
20
import android.widget.RelativeLayout;
18
import android.widget.TextView;
21
import android.widget.TextView;
19
import android.widget.ToggleButton;
22
import android.widget.ToggleButton;
20
23
24
import com.bumptech.glide.Glide;
25
import com.bumptech.glide.request.RequestOptions;
21
import com.electric.chargingpile.R;
26
import com.electric.chargingpile.R;
22
import com.electric.chargingpile.data.TalkRecommendBean;
27
import com.electric.chargingpile.data.TalkRecommendBean;
28
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
23
import com.electric.chargingpile.util.BitmapCache;
29
import com.electric.chargingpile.util.BitmapCache;
24
import com.electric.chargingpile.util.BitmapCache.ImageCallback;
30
import com.electric.chargingpile.util.BitmapCache.ImageCallback;
25
import com.electric.chargingpile.util.CircleTransform;
31
import com.electric.chargingpile.util.CircleTransform;
30
import java.util.ArrayList;
36
import java.util.ArrayList;
31
import java.util.List;
37
import java.util.List;
32
38
33
public class TopicAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
39
public class TopicAdapter extends RecyclerView.Adapter<TopicAdapter.ItemViewHolder> {
34
    private ArrayList<TalkRecommendBean> dataList = new ArrayList<>();
40
    private ArrayList<TalkRecommendBean> dataList = new ArrayList<>();
35
    private Context mContext;
41
    private Context mContext;
36
    private int type = 0;
42
    private int type = 0;
37
    public final static int RECOMENT_TYPE = 0;
43
    public final static int RECOMENT_TITLE = 0;
38
    public final static int RECOMENT_ITEM = 1;
44
    public final static int RECOMENT_ITEM = 1;
39
45
40
    public TopicAdapter(Context c) {
46
    public TopicAdapter(Context c) {
41
        mContext = c;
47
        mContext = c;
42
    }
48
    }
43
49
44
45
    @Override
46
    public int getItemViewType(int position) {
47
        if (type == RECOMENT_TYPE && position == 0) {
48
            return RECOMENT_TYPE;
49
        } else {
50
            return RECOMENT_ITEM;
51
        }
52
    }
53
54
    @NonNull
50
    @NonNull
55
    @Override
51
    @Override
56
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
57
        View view;
58
        if (viewType == RECOMENT_TYPE) {
59
            view = LayoutInflater.from(mContext).inflate(R.layout.title_item_topic, null);
60
            return new TitleViewHolder(view);
61
        } else if (viewType == RECOMENT_ITEM) {
62
            view = LayoutInflater.from(mContext).inflate(R.layout.item_topic, null);
63
            return new ItemViewHolder(view);
64
        }
65
        return null;
52
    public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
53
        View view = LayoutInflater.from(mContext).inflate(R.layout.item_topic, null);
54
        return new ItemViewHolder(view);
66
    }
55
    }
67
56
68
    @Override
57
    @Override
69
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
70
        int itemViewType = getItemViewType(position);
71
        if (itemViewType == RECOMENT_TYPE) {
72
            TitleViewHolder titleViewHolder = (TitleViewHolder) holder;
73
        } else {
74
            ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
75
            TalkRecommendBean item = getItem(position);
76
            itemViewHolder.mItemTopicName.setText(item.name);
77
78
79
            if (TextUtils.isEmpty(item.coverImgUrl)) {
80
                Picasso.with(mContext)
81
                        .load(R.drawable.icon_face2_0)
82
                        .placeholder(R.drawable.icon_face2_0)
83
                        .error(R.drawable.icon_face2_0)
84
                        .into(itemViewHolder.mItemTopicImg);
58
    public void onBindViewHolder(ItemViewHolder itemViewHolder, int position) {
59
        if (position == 0) {
60
            if (type == RECOMENT_TITLE) {
61
                itemViewHolder.mItemTopicLayout.setVisibility(View.VISIBLE);
85
            } else {
62
            } else {
86
                Picasso.with(mContext)
87
                        .load(item.headImgUrl)
88
                        .placeholder(R.drawable.icon_face2_0)
89
                        .error(R.drawable.icon_face2_0)
90
                        .into(itemViewHolder.mItemTopicImg);
63
                itemViewHolder.mItemTopicLayout.setVisibility(View.GONE);
91
            }
64
            }
65
        } else {
66
            itemViewHolder.mItemTopicLayout.setVisibility(View.GONE);
92
        }
67
        }
93
    }
94
95
68
96
    private TalkRecommendBean getItem(int position) {
97
        if (type == RECOMENT_TYPE) {
98
            return dataList.get(position - 1);
69
        TalkRecommendBean item = getItem(position);
70
        if (type == RECOMENT_ITEM) {
71
            itemViewHolder.mItemTopicName.setText(Html.fromHtml(item.name));
99
        } else {
72
        } else {
100
            return dataList.get(position);
73
            itemViewHolder.mItemTopicName.setText(item.topicName);
101
        }
74
        }
75
76
        Glide
77
                .with(itemViewHolder.mItemTopicImg)
78
                .load(TextUtils.isEmpty(item.coverImgUrl) ? "" : item.coverImgUrl)
79
                .apply(requestOptions)
80
                .into(itemViewHolder.mItemTopicImg);
81
    }
82
83
    RequestOptions requestOptions = new RequestOptions().centerCrop();
84
85
    public TalkRecommendBean getItem(int position) {
86
        return dataList.get(position);
102
    }
87
    }
103
88
104
89
105
    @Override
90
    @Override
106
    public int getItemCount() {
91
    public int getItemCount() {
107
        if (type == RECOMENT_TYPE) {
108
            return dataList.size() + 1;
109
        } else {
110
            return dataList.size();
111
        }
92
        return dataList.size();
112
    }
93
    }
113
94
114
    public void setType(int i) {
115
        type = i;
116
    }
117
95
118
    public void addData(List<TalkRecommendBean> qadata) {
96
    public void addData(int i, List<TalkRecommendBean> qadata) {
97
        type = i;
98
        dataList.clear();
119
        if (qadata != null && qadata.size() > 0) {
99
        if (qadata != null && qadata.size() > 0) {
120
            dataList.addAll(qadata);
100
            dataList.addAll(qadata);
121
            notifyDataSetChanged();
101
            notifyDataSetChanged();
122
        }
102
        }
123
    }
103
    }
124
104
125
    /**
126
     * 存放列表项控件句柄
127
     */
128
    static class TitleViewHolder extends RecyclerView.ViewHolder {
129
        public TitleViewHolder(View itemView) {
130
            super(itemView);
131
        }
132
    }
133
134
105
135
    /**
106
    /**
136
     * 存放列表项控件句柄
107
     * 存放列表项控件句柄
137
     */
108
     */
138
    static class ItemViewHolder extends RecyclerView.ViewHolder {
109
    class ItemViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
139
110
140
        private ImageView mItemTopicImg;
111
        private ImageView mItemTopicImg;
141
        private TextView mItemTopicName;
112
        private TextView mItemTopicName;
113
        private LinearLayout mItemTopicLayout;
114
        private RelativeLayout mItemTopicRl;
142
115
143
        public ItemViewHolder(View itemView) {
116
        public ItemViewHolder(View itemView) {
144
            super(itemView);
117
            super(itemView);
145
118
119
            mItemTopicLayout = (LinearLayout) itemView.findViewById(R.id.item_topic_title);
146
            mItemTopicImg = (ImageView) itemView.findViewById(R.id.item_topic_img);
120
            mItemTopicImg = (ImageView) itemView.findViewById(R.id.item_topic_img);
147
            mItemTopicName = (TextView) itemView.findViewById(R.id.item_topic_name);
121
            mItemTopicName = (TextView) itemView.findViewById(R.id.item_topic_name);
122
            mItemTopicRl = (RelativeLayout) itemView.findViewById(R.id.item_topic_rl);
123
            mItemTopicRl.setOnClickListener(this);
124
125
        }
148
126
127
        @Override
128
        public void onClick(View view) {
129
            if (recyclerItemTypeClickListener != null) {
130
                recyclerItemTypeClickListener.onItemClickListener(getLayoutPosition(), 1);
131
            }
149
        }
132
        }
150
    }
133
    }
151
134
135
    RecyclerItemTypeClickListener recyclerItemTypeClickListener;
136
137
    public void setRecyclerItemTypeClickListener(RecyclerItemTypeClickListener recyclerItemTypeClickListener) {
138
        this.recyclerItemTypeClickListener = recyclerItemTypeClickListener;
139
    }
152
}
140
}

+ 224 - 227
app/src/main/java/com/electric/chargingpile/application/MainApplication.java

22
import com.blankj.utilcode.util.BarUtils;
22
import com.blankj.utilcode.util.BarUtils;
23
import com.blankj.utilcode.util.LogUtils;
23
import com.blankj.utilcode.util.LogUtils;
24
import com.blankj.utilcode.util.Utils;
24
import com.blankj.utilcode.util.Utils;
25
import com.electric.chargingpile.BuildConfig;
25
import com.electric.chargingpile.R;
26
import com.electric.chargingpile.R;
26
import com.electric.chargingpile.activity.MainMapActivity;
27
import com.electric.chargingpile.activity.MainMapActivity;
27
import com.electric.chargingpile.data.AdDetail;
28
import com.electric.chargingpile.data.AdDetail;
57
import cn.jpush.android.api.JPushInterface;
58
import cn.jpush.android.api.JPushInterface;
58

59

59
public class MainApplication extends MultiDexApplication {
60
public class MainApplication extends MultiDexApplication {
60
	public static MainApplication instances;
61
	private DaoMaster.DevOpenHelper mHelper;
62
	private SQLiteDatabase db;
63
	private DaoMaster mDaoMaster;
64
	private DaoSession mDaoSession;
65
	public static int mScreenWidth;
66
	public static int mScreenHeight;
61
    public static MainApplication instances;
62
    private DaoMaster.DevOpenHelper mHelper;
63
    private SQLiteDatabase db;
64
    private DaoMaster mDaoMaster;
65
    private DaoSession mDaoSession;
66
    public static int mScreenWidth;
67
    public static int mScreenHeight;
67
    public static SharedPreferencesHelper sph;
68
    public static SharedPreferencesHelper sph;
68
    public static List<Zhan>collectList;
69
	public static String userPhone = "";
70
	public static String userTpye = "";
71
	public static String userId = "";
72
	public static String userCar = "";
73
	public static String userIcon = "";
74
	public static String userNickname = "";
75
	public static String mapStatus = "";
76
	public static String costWay = "";
77
	public static String sudu = "";
78
	public static String shuxing = "";
79
	public static String messageToken = "";
80
	public static String map = "";
81
	public static String atCity = "";
82
	public static String sql = "";
83
	public static String uptime = "";
84
	public static String details_flag = "0";
85
	public static String firstPoint = "";
86
	public static Boolean firstSsyd ;
87
	public static String password = "";
88
//	public static String url = "http://123.57.6.131";
89
	public static String url = "http://cdz.evcharge.cc";
90
	public static String urlNew = "http://123.56.67.7:83/api/0200";
91
	public static String pic_url = "http://cdz.evcharge.cc/zhannew/uploadfile/";
92
//	public static String url = "https://cdz.d1ev.com";
93
	public static String build_flag = "0";
94
	public static String support = "0";
95
	public static String freestop = "";
96
	public static String selecthotel = "";
97
	public static String selectexpressway = "";
98
	public static String selectjingdian = "";
99
	public static String logid = "";
100
	public static String suitcar = "";
101
	public static Boolean gestureguide ;
102
	public static String h5_url = "";
103
	public static String push_id = "";
104
	public static String imei = "";
105
	public static String current_url = "";
106
	public static String goods_type = "";
107
	public static String ad_link = "";
108
	public static String ok = "";
109
	public static String type = "";
110
	public static String userPassword = "";
111
	public static String mainSkip = "";
112
	public static String level_one = "";
113
	public static String level_two = "";
114
	public static String level_three = "";
115
	public static String level_four = "";
116
	public static String level_five = "";
117
	public static String huodonglabel = "";
118
	public static String mianStop = "";
119
	public static String search_address = "";
120
	public static boolean isMap = true;
121
	public static int count ;
122
	public static int round ;
123
	public static int msgOne ;
124
	public static String msgTime ;
125
	public static String firstOpenTime ;
126
	public static int msgTwo ;
127
	public static List<AdDetail> list_addetail;
128
	public static String festival_time = "";
129
	public static boolean isIgnore = true;
130
	public static Double search_jing =0.0 ,search_wei=0.0;
131
	public static Context context;
132
	public static String current_code ="3.1.1";
133
	public static String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "cdz_android";
134
	public static String q_content = "";
135
	public static Map<String,String> q_map = new HashMap<>();
136
	public static boolean isFirstExample;
137
	public static boolean isAppStart;
138
	public static boolean haveActivity = false;
139
	public static String ad_major = "";
140
	private String mCurrentCity = "";
141

142

143
	@SuppressLint("MissingPermission")
144
	@Override
145
	public void onCreate() {
146
		super.onCreate();
147
//		Fresco.initialize(getApplicationContext());
148
		this.context = getApplicationContext();
149
		StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
150
		StrictMode.setVmPolicy(builder.build());
151
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
152
			builder.detectFileUriExposure();
153
		}
154

155
		MobSDK.init(this);
156

157
		instances = this;
158
		setDatabase();
159
//		setDatabase();
160

161

162

163
		Utils.init(this);
164
		LogUtils.getConfig().setLogSwitch(true);
165

166
		//极光
167
		JPushInterface.setDebugMode(true);
168
		JPushInterface.init(this);
169

170
		String rid = JPushInterface.getRegistrationID(getApplicationContext());
171
		push_id = rid;
172
		Intent intent = new Intent();
173
		if(JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())){
174
			Bundle bundle = intent.getExtras();
175
			String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
176
			try {
177
				JSONObject jsonObject = new JSONObject(extras);
178
				String url = jsonObject.getString("extra");
179
				Log.e("extra==",url);
180
			} catch (JSONException e) {
181
				e.printStackTrace();
182
			}
183
		}
69
    public static List<Zhan> collectList;
70
    public static String userPhone = "";
71
    public static String userTpye = "";
72
    public static String userId = "";
73
    public static String userCar = "";
74
    public static String userIcon = "";
75
    public static String userNickname = "";
76
    public static String mapStatus = "";
77
    public static String costWay = "";
78
    public static String sudu = "";
79
    public static String shuxing = "";
80
    public static String messageToken = "";
81
    public static String map = "";
82
    public static String atCity = "";
83
    public static String sql = "";
84
    public static String uptime = "";
85
    public static String details_flag = "0";
86
    public static String firstPoint = "";
87
    public static Boolean firstSsyd;
88
    public static String password = "";
89
    //	public static String url = "http://123.57.6.131";
90
    public static String url = "http://cdz.evcharge.cc";
91
    public static String urlNew = "http://123.56.67.7:83/api/0200";
92
    public static String pic_url = "http://cdz.evcharge.cc/zhannew/uploadfile/";
93
    //	public static String url = "https://cdz.d1ev.com";
94
    public static String build_flag = "0";
95
    public static String support = "0";
96
    public static String freestop = "";
97
    public static String selecthotel = "";
98
    public static String selectexpressway = "";
99
    public static String selectjingdian = "";
100
    public static String logid = "";
101
    public static String suitcar = "";
102
    public static Boolean gestureguide;
103
    public static String h5_url = "";
104
    public static String push_id = "";
105
    public static String imei = "";
106
    public static String current_url = "";
107
    public static String goods_type = "";
108
    public static String ad_link = "";
109
    public static String ok = "";
110
    public static String type = "";
111
    public static String userPassword = "";
112
    public static String mainSkip = "";
113
    public static String level_one = "";
114
    public static String level_two = "";
115
    public static String level_three = "";
116
    public static String level_four = "";
117
    public static String level_five = "";
118
    public static String huodonglabel = "";
119
    public static String mianStop = "";
120
    public static String search_address = "";
121
    public static boolean isMap = true;
122
    public static int count;
123
    public static int round;
124
    public static int msgOne;
125
    public static String msgTime;
126
    public static String firstOpenTime;
127
    public static int msgTwo;
128
    public static List<AdDetail> list_addetail;
129
    public static String festival_time = "";
130
    public static boolean isIgnore = true;
131
    public static Double search_jing = 0.0, search_wei = 0.0;
132
    public static Context context;
133
    public static String current_code = "3.1.1";
134
    public static String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "cdz_android";
135
    public static String q_content = "";
136
    public static Map<String, String> q_map = new HashMap<>();
137
    public static boolean isFirstExample;
138
    public static boolean isAppStart;
139
    public static boolean haveActivity = false;
140
    public static String ad_major = "";
141
    private String mCurrentCity = "";
142

143

144
    @SuppressLint("MissingPermission")
145
    @Override
146
    public void onCreate() {
147
        super.onCreate();
148
        this.context = getApplicationContext();
149
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
150
        StrictMode.setVmPolicy(builder.build());
151
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
152
            builder.detectFileUriExposure();
153
        }
154

155
        MobSDK.init(this);
156

157
        instances = this;
158
        setDatabase();
159

160
        Utils.init(this);
161
        LogUtils.getConfig().setLogSwitch(true);
162

163
        //极光
164
        JPushInterface.setDebugMode(true);
165
        JPushInterface.init(this);
166

167
        String rid = JPushInterface.getRegistrationID(getApplicationContext());
168
        push_id = rid;
169
        Intent intent = new Intent();
170
        if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
171
            Bundle bundle = intent.getExtras();
172
            String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
173
            try {
174
                JSONObject jsonObject = new JSONObject(extras);
175
                String url = jsonObject.getString("extra");
176
                Log.e("extra==", url);
177
            } catch (JSONException e) {
178
                e.printStackTrace();
179
            }
180
        }
184
//		TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
181
//		TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
185
//		imei = tm.getDeviceId();
182
//		imei = tm.getDeviceId();
186

183

187
		CrashReport.initCrashReport(getApplicationContext(), "900010422", true);
188
		initImageLoader(getApplicationContext());
189
//		Fresco.initialize(this);
184
        CrashReport.initCrashReport(getApplicationContext(), "900010422", BuildConfig.DEBUG);
185
        initImageLoader(getApplicationContext());
190

186

191
		try
192
		{
187

188
        try {
193
//			OkHttpUtil.getInstance().setCertificates(getAssets().open("ca.crt"));
189
//			OkHttpUtil.getInstance().setCertificates(getAssets().open("ca.crt"));
194
			OkHttpUtils.getInstance().setCertificates(getAssets().open("ca.crt"));
195
			OkHttpUtils.getInstance().setCertificates();
196
		} catch (IOException e)
197
		{
198
			e.printStackTrace();
199
		}
190
            OkHttpUtils.getInstance().setCertificates(getAssets().open("ca.crt"));
191
            OkHttpUtils.getInstance().setCertificates();
192
        } catch (IOException e) {
193
            e.printStackTrace();
194
        }
200
//		SDKInitializer.initialize(getApplicationContext());
195
//		SDKInitializer.initialize(getApplicationContext());
201

196

202
		mScreenWidth = getResources().getDisplayMetrics().widthPixels;
203
		mScreenHeight = getResources().getDisplayMetrics().heightPixels;
204
		Log.e("mScreenWidth",mScreenWidth+"");
205
		Log.e("mScreenHeight",mScreenHeight+"");
206
		sph = new SharedPreferencesHelper(this);
207
		collectList=new ArrayList<>();
208

209
		isAppStart = ProfileManager.getInstance().getAppStart(getApplicationContext());
210

211
		userPhone = ProfileManager.getInstance().getUsername(getApplicationContext());
212
		userId = ProfileManager.getInstance().getUserid(getApplicationContext());
213
		userPassword =ProfileManager.getInstance().getKeyUserpassword(getApplicationContext());
214
		userCar = ProfileManager.getInstance().getUsercar(getApplicationContext());
215
		userIcon = ProfileManager.getInstance().getUsericon(getApplicationContext());
216
		Log.e("111", "onCreate: "+userIcon);
217
		msgOne = ProfileManager.getInstance().getMsgOne(getApplicationContext());
218
		msgTime = ProfileManager.getInstance().getSystemMsgTime(getApplicationContext());
219
		firstOpenTime = ProfileManager.getInstance().getFirstOpenTime(getApplicationContext());
197
        mScreenWidth = getResources().getDisplayMetrics().widthPixels;
198
        mScreenHeight = getResources().getDisplayMetrics().heightPixels;
199
        Log.e("mScreenWidth", mScreenWidth + "");
200
        Log.e("mScreenHeight", mScreenHeight + "");
201
        sph = new SharedPreferencesHelper(this);
202
        collectList = new ArrayList<>();
203

204
        isAppStart = ProfileManager.getInstance().getAppStart(getApplicationContext());
205

206
        userPhone = ProfileManager.getInstance().getUsername(getApplicationContext());
207
        userId = ProfileManager.getInstance().getUserid(getApplicationContext());
208
        userPassword = ProfileManager.getInstance().getKeyUserpassword(getApplicationContext());
209
        userCar = ProfileManager.getInstance().getUsercar(getApplicationContext());
210
        userIcon = ProfileManager.getInstance().getUsericon(getApplicationContext());
211
        Log.e("111", "onCreate: " + userIcon);
212
        msgOne = ProfileManager.getInstance().getMsgOne(getApplicationContext());
213
        msgTime = ProfileManager.getInstance().getSystemMsgTime(getApplicationContext());
214
        firstOpenTime = ProfileManager.getInstance().getFirstOpenTime(getApplicationContext());
220
//		msgTwo = ProfileManager.getInstance().getMsgTwo(getApplicationContext());
215
//		msgTwo = ProfileManager.getInstance().getMsgTwo(getApplicationContext());
221

216

222
		loginRemind();
223
		setFestival();
217
        loginRemind();
218
        setFestival();
224

219

225
	}
220
    }
226

221

227
	public static MainApplication getInstance() {
228
		if (null == instances) {
229
			instances = new MainApplication();
230
		}
231
		return instances;
232
	}
222
    public static MainApplication getInstance() {
223
        if (null == instances) {
224
            instances = new MainApplication();
225
        }
226
        return instances;
227
    }
233

228

234
	public void setmCurrentCity(String mCurrentCity) {
235
		this.mCurrentCity = mCurrentCity;
236
	}
229
    public void setmCurrentCity(String mCurrentCity) {
230
        this.mCurrentCity = mCurrentCity;
231
    }
237

232

238
	public String getmCurrentCity() {
239
		return mCurrentCity;
240
	}
233
    public String getmCurrentCity() {
234
        return mCurrentCity;
235
    }
241

236

242
	private static void setSph(){
237
    private static void setSph() {
243

238

244
	}
239
    }
245

240

246

241

247
	public static void initImageLoader(Context context) {
248
		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPoolSize(5).threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory()
249
				.discCacheFileNameGenerator(new Md5FileNameGenerator()).discCacheSize(50 * 1024 * 1024).memoryCacheSize(5*1024*1024).build();
250
		ImageLoader.getInstance().init(config);
251
	}
242
    public static void initImageLoader(Context context) {
243
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPoolSize(5).threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory()
244
                .discCacheFileNameGenerator(new Md5FileNameGenerator()).discCacheSize(50 * 1024 * 1024).memoryCacheSize(5 * 1024 * 1024).build();
245
        ImageLoader.getInstance().init(config);
246
    }
252

247

253
	public static DisplayImageOptions getCacheOptions(int image) {
254
		return new DisplayImageOptions.Builder().showImageForEmptyUri(image).showImageOnFail(image).cacheInMemory(true).cacheOnDisc(true).considerExifParams(true)
255
				.imageScaleType(ImageScaleType.IN_SAMPLE_INT).resetViewBeforeLoading(false).bitmapConfig(Bitmap.Config.RGB_565).build();
256
	}
248
    public static DisplayImageOptions getCacheOptions(int image) {
249
        return new DisplayImageOptions.Builder().showImageForEmptyUri(image).showImageOnFail(image).cacheInMemory(true).cacheOnDisc(true).considerExifParams(true)
250
                .imageScaleType(ImageScaleType.IN_SAMPLE_INT).resetViewBeforeLoading(false).bitmapConfig(Bitmap.Config.RGB_565).build();
251
    }
257

252

258
//	public void showTextToast(String msg) {
253
//	public void showTextToast(String msg) {
259
//		if (toast == null) {
254
//		if (toast == null) {
265
//	}
260
//	}
266

261

267

262

268
	public static boolean isLogin() {
269
		if ("".equals(userPhone)) {
270
			return false;
271
		}
272

273
		return true;
274

275
	}
276

277
	private void loginRemind(){
278
		round = ProfileManager.getInstance().getRound(getApplicationContext());
279
		count = ProfileManager.getInstance().getCount(getApplicationContext());
280
		if (!MainApplication.isLogin()){
281
			int i = count +1;
282
			Log.e("i***-",i+"");
283
			ProfileManager.getInstance().setCount(getApplicationContext(),i);
284
			count = i;
285
		}
286
	}
287

288
	private void setFestival(){
289
		int time = (int) (System.currentTimeMillis() / 1000);
290
		if (time >= 1484841600 && time <= 1486569599 ){
291
			MainApplication.festival_time = "1";
292
		}else if (time >= 1486569600 && time <= 1486915199){
293
			MainApplication.festival_time = "2";
294
		}
295
	}
296

297
	/**
298
	 * 设置greenDao
299
	 */
300
	private void setDatabase() {
301
		// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
302
		// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
303
		// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
304
		// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
305
		mHelper = new DaoMaster.DevOpenHelper(this, "my-search-text-db", null);
306
		db = mHelper.getWritableDatabase();
307
		// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
308
		mDaoMaster = new DaoMaster(db);
309
		mDaoSession = mDaoMaster.newSession();
310
	}
311
	public DaoSession getDaoSession() {
312
		return mDaoSession;
313
	}
314
	public SQLiteDatabase getDb() {
315
		return db;
316
	}
263
    public static boolean isLogin() {
264
        if ("".equals(userPhone)) {
265
            return false;
266
        }
267

268
        return true;
269

270
    }
271

272
    private void loginRemind() {
273
        round = ProfileManager.getInstance().getRound(getApplicationContext());
274
        count = ProfileManager.getInstance().getCount(getApplicationContext());
275
        if (!MainApplication.isLogin()) {
276
            int i = count + 1;
277
            Log.e("i***-", i + "");
278
            ProfileManager.getInstance().setCount(getApplicationContext(), i);
279
            count = i;
280
        }
281
    }
282

283
    private void setFestival() {
284
        int time = (int) (System.currentTimeMillis() / 1000);
285
        if (time >= 1484841600 && time <= 1486569599) {
286
            MainApplication.festival_time = "1";
287
        } else if (time >= 1486569600 && time <= 1486915199) {
288
            MainApplication.festival_time = "2";
289
        }
290
    }
291

292
    /**
293
     * 设置greenDao
294
     */
295
    private void setDatabase() {
296
        // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
297
        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
298
        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
299
        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
300
        mHelper = new DaoMaster.DevOpenHelper(this, "my-search-text-db", null);
301
        db = mHelper.getWritableDatabase();
302
        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
303
        mDaoMaster = new DaoMaster(db);
304
        mDaoSession = mDaoMaster.newSession();
305
    }
306

307
    public DaoSession getDaoSession() {
308
        return mDaoSession;
309
    }
310

311
    public SQLiteDatabase getDb() {
312
        return db;
313
    }
317

314

318
}
315
}
319

316


+ 31 - 11
app/src/main/res/layout/activity_publishtopic.xml

7
        android:id="@+id/publishtopic_back"
7
        android:id="@+id/publishtopic_back"
8
        android:layout_width="44dp"
8
        android:layout_width="44dp"
9
        android:layout_height="44dp"
9
        android:layout_height="44dp"
10
        android:background="#000" />
10
        android:padding="13dp"
11
        android:rotation="90"
12
        android:src="@drawable/icon_edit_down" />
11
13
12
    <TextView
14
    <TextView
13
        android:layout_width="wrap_content"
15
        android:layout_width="wrap_content"
56
                android:background="@null"
58
                android:background="@null"
57
                android:gravity="top"
59
                android:gravity="top"
58
                android:hint="聊聊你的想法......"
60
                android:hint="聊聊你的想法......"
59
                android:minHeight="120dp"
61
                android:minHeight="260dp"
60
                android:textColorHint="#555555"
62
                android:textColorHint="#555555"
61
                android:textSize="14sp" />
63
                android:textSize="14sp" />
62
64
68
    </ScrollView>
70
    </ScrollView>
69
71
70
72
71
    <TextView
72
        android:id="@+id/publishtopic_choose_topic"
73
    <LinearLayout
73
        android:layout_width="wrap_content"
74
        android:layout_width="wrap_content"
74
        android:layout_height="30dp"
75
        android:layout_height="30dp"
75
        android:layout_alignParentBottom="true"
76
        android:layout_alignParentBottom="true"
76
        android:layout_marginStart="15dp"
77
        android:layout_marginStart="15dp"
77
        android:layout_marginBottom="10dp"
78
        android:layout_marginBottom="10dp"
78
        android:background="#EE12E812"
79
        android:background="#f5f5f5"
79
        android:gravity="center_vertical"
80
        android:gravity="center_vertical"
80
        android:orientation="horizontal"
81
        android:paddingStart="@dimen/ui_10_dip"
82
        android:paddingEnd="@dimen/ui_10_dip"
83
        android:text="# 选择话题"
84
        android:textColor="#555"
85
        android:textSize="14sp" />
81
        android:orientation="horizontal">
82
83
84
        <TextView
85
            android:id="@+id/publishtopic_choose_topic"
86
            android:layout_width="wrap_content"
87
            android:layout_height="wrap_content"
88
            android:ellipsize="end"
89
            android:lines="1"
90
            android:maxWidth="180dp"
91
            android:paddingStart="@dimen/ui_10_dip"
92
            android:paddingEnd="@dimen/ui_10_dip"
93
            android:text="# 选择话题"
94
            android:textColor="#555"
95
            android:textSize="14sp" />
96
97
        <ImageView
98
            android:id="@+id/publishtopic_choose_topic_de"
99
            android:layout_width="30dp"
100
            android:layout_height="30dp"
101
            android:padding="3dp"
102
            android:src="@drawable/icon_close"
103
            android:visibility="gone" />
104
105
    </LinearLayout>
86
106
87
    <TextView
107
    <TextView
88
        android:id="@+id/publishtopic_choose_preview"
108
        android:id="@+id/publishtopic_choose_preview"

+ 8 - 4
app/src/main/res/layout/activity_topic.xml

8
        android:id="@+id/topic_back"
8
        android:id="@+id/topic_back"
9
        android:layout_width="44dp"
9
        android:layout_width="44dp"
10
        android:layout_height="44dp"
10
        android:layout_height="44dp"
11
        android:background="#000" />
11
        android:padding="13dp"
12
        android:rotation="90"
13
        android:src="@drawable/icon_edit_down" />
12
14
13
    <TextView
15
    <TextView
14
        android:layout_width="wrap_content"
16
        android:layout_width="wrap_content"
15
        android:layout_height="44dp"
17
        android:layout_height="44dp"
16
        android:layout_centerHorizontal="true"
18
        android:layout_centerHorizontal="true"
17
        android:gravity="center_vertical"
19
        android:gravity="center_vertical"
18
        android:text="发布"
20
        android:text="话题"
19
        android:textColor="#222"
21
        android:textColor="#222"
20
        android:textSize="18sp" />
22
        android:textSize="18sp" />
21
23
46
            android:layout_centerVertical="true"
48
            android:layout_centerVertical="true"
47
            android:layout_marginStart="8dp"
49
            android:layout_marginStart="8dp"
48
            android:layout_marginEnd="4dp"
50
            android:layout_marginEnd="4dp"
49
            android:background="#b2de" />
51
            android:background="@drawable/icon_search_list" />
50
52
51
        <View
53
        <View
52
            android:id="@+id/topic_input_end"
54
            android:id="@+id/topic_input_end"
56
            android:layout_centerVertical="true"
58
            android:layout_centerVertical="true"
57
            android:layout_marginStart="4dp"
59
            android:layout_marginStart="4dp"
58
            android:layout_marginEnd="8dp"
60
            android:layout_marginEnd="8dp"
59
            android:background="#b2de" />
61
            android:background="@drawable/icon_tuijian_close"
62
            android:visibility="gone" />
60
63
61
        <EditText
64
        <EditText
62
            android:id="@+id/topic_con"
65
            android:id="@+id/topic_con"
67
            android:background="@null"
70
            android:background="@null"
68
            android:gravity="center_vertical"
71
            android:gravity="center_vertical"
69
            android:hint="请输入你感兴趣的话题"
72
            android:hint="请输入你感兴趣的话题"
73
            android:lines="1"
70
            android:textColorHint="#555555"
74
            android:textColorHint="#555555"
71
            android:textSize="14sp" />
75
            android:textSize="14sp" />
72
    </RelativeLayout>
76
    </RelativeLayout>

+ 51 - 22
app/src/main/res/layout/item_topic.xml

1
<?xml version="1.0" encoding="utf-8"?>
1
<?xml version="1.0" encoding="utf-8"?>
2
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
    android:layout_width="match_parent"
3
    android:layout_width="match_parent"
4
    android:layout_height="60dp"
5
    android:paddingStart="15dp"
6
    android:paddingEnd="15dp">
4
    android:layout_height="wrap_content"
5
    android:orientation="vertical">
7
6
8
    <ImageView
9
        android:id="@+id/item_topic_img"
10
        android:layout_width="50dp"
11
        android:layout_height="43dp"
12
        android:layout_centerVertical="true"
13
        android:background="#000" />
14
15
    <TextView
16
        android:id="@+id/item_topic_name"
7
    <LinearLayout
8
        android:id="@+id/item_topic_title"
17
        android:layout_width="match_parent"
9
        android:layout_width="match_parent"
18
        android:layout_height="wrap_content"
10
        android:layout_height="wrap_content"
19
        android:layout_centerVertical="true"
20
        android:layout_marginStart="10dp"
21
        android:layout_toEndOf="@+id/item_topic_img"
22
        android:ellipsize="end"
23
        android:maxLines="2"
24
        android:text="adadasd"
25
        android:textColor="#444444"
26
        android:textSize="14sp" />
11
        android:visibility="gone"
12
        android:orientation="vertical">
13
14
        <TextView
15
            android:layout_width="wrap_content"
16
            android:layout_height="50dp"
17
            android:layout_marginStart="15dp"
18
            android:gravity="center_vertical"
19
            android:text="推荐话题"
20
            android:textColor="#444444"
21
            android:textSize="15sp" />
22
23
        <View
24
            android:layout_width="match_parent"
25
            android:layout_height="1dp"
26
            android:background="#ddd" />
27
    </LinearLayout>
28
29
    <RelativeLayout
30
        android:id="@+id/item_topic_rl"
31
        android:layout_width="match_parent"
32
        android:layout_height="60dp"
33
        android:paddingStart="15dp"
34
        android:paddingEnd="15dp">
35
36
        <ImageView
37
            android:id="@+id/item_topic_img"
38
            android:layout_width="50dp"
39
            android:layout_height="43dp"
40
            android:layout_centerVertical="true"
41
            android:background="#000" />
42
43
        <TextView
44
            android:id="@+id/item_topic_name"
45
            android:layout_width="match_parent"
46
            android:layout_height="wrap_content"
47
            android:layout_centerVertical="true"
48
            android:layout_marginStart="10dp"
49
            android:layout_toEndOf="@+id/item_topic_img"
50
            android:ellipsize="end"
51
            android:maxLines="2"
52
            android:text="adadasd"
53
            android:textColor="#444444"
54
            android:textSize="14sp" />
27
55
28
</RelativeLayout>
56
    </RelativeLayout>
57
</LinearLayout>

+ 0 - 10
app/src/main/res/layout/title_item_topic.xml

4
    android:layout_width="match_parent"
4
    android:layout_width="match_parent"
5
    android:layout_height="50dp">
5
    android:layout_height="50dp">
6
6
7
    <TextView
8
        android:layout_width="wrap_content"
9
        android:layout_height="wrap_content"
10
        android:layout_marginStart="15dp"
11
        android:text="推荐话题"
12
        android:textColor="#444444"
13
        android:textSize="15sp"
14
        app:layout_constraintBottom_toTopOf="parent"
15
        app:layout_constraintStart_toStartOf="parent"
16
        app:layout_constraintTop_toBottomOf="parent" />
17
</android.support.constraint.ConstraintLayout>
7
</android.support.constraint.ConstraintLayout>