浏览代码

添加网络状态判断

hsiao 7 年前
父节点
当前提交
ccb462ff66

+ 1
- 1
lesson02/src/main/java/io/hsiao/lesson02/MainActivity.java 查看文件

@@ -85,7 +85,7 @@ public class MainActivity extends AppCompatActivity {
85 85
 
86 86
                 startActivity(intent);
87 87
             }
88
-        });
88
+});
89 89
 
90 90
         /**
91 91
          * 绑定Item的长按方法。

+ 1
- 0
lesson03/src/main/AndroidManifest.xml 查看文件

@@ -2,6 +2,7 @@
2 2
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 3
     package="io.hsiao.lesson03">
4 4
 
5
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
5 6
     <uses-permission android:name="android.permission.INTERNET" />
6 7
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
7 8
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

+ 1
- 0
lesson03/src/main/java/io/hsiao/lesson03/AlbumGridAdapter.java 查看文件

@@ -80,6 +80,7 @@ public class AlbumGridAdapter extends BaseAdapter {
80 80
             layoutParams.height = imgHeight;
81 81
             layoutParams.width = imgHeight;
82 82
             holder.thumbnail.setLayoutParams(layoutParams);
83
+
83 84
             convertView.setTag(holder);
84 85
         } else {
85 86
             holder = (ViewHolder) convertView.getTag();

+ 107
- 1
lesson03/src/main/java/io/hsiao/lesson03/MainActivity.java 查看文件

@@ -2,8 +2,11 @@ package io.hsiao.lesson03;
2 2
 
3 3
 import android.content.Intent;
4 4
 import android.graphics.Point;
5
+import android.net.ConnectivityManager;
6
+import android.net.NetworkInfo;
5 7
 import android.os.AsyncTask;
6 8
 import android.os.Bundle;
9
+import android.os.Handler;
7 10
 import android.support.v7.app.AppCompatActivity;
8 11
 import android.support.v7.widget.Toolbar;
9 12
 import android.util.Log;
@@ -13,11 +16,20 @@ import android.view.MenuItem;
13 16
 import android.view.View;
14 17
 import android.widget.AbsListView;
15 18
 import android.widget.AdapterView;
19
+import android.widget.Button;
16 20
 import android.widget.GridView;
17 21
 import android.widget.ListView;
18 22
 import android.widget.ProgressBar;
23
+import android.widget.Toast;
24
+
25
+import java.util.HashMap;
26
+import java.util.List;
27
+import java.util.Map;
19 28
 
20 29
 import io.hsiao.lesson03.data.AsyncListLoader;
30
+import io.hsiao.lesson03.data.DemoTask;
31
+import io.hsiao.lesson03.data.ImageApiClient;
32
+import io.hsiao.lesson03.model.Feeds;
21 33
 
22 34
 public class MainActivity extends AppCompatActivity {
23 35
     public static Point screenOutSize = new Point();
@@ -28,22 +40,71 @@ public class MainActivity extends AppCompatActivity {
28 40
 
29 41
     private int dataOffset = 0;
30 42
     private int pageSize = 15;
43
+    private DemoTask demoTask;
31 44
 
32 45
     @Override
33 46
     protected void onCreate(Bundle savedInstanceState) {
34 47
         super.onCreate(savedInstanceState);
48
+
49
+        reload();
50
+    }
51
+    private boolean isNetworkAvailable(){
52
+        ConnectivityManager manager = (ConnectivityManager) this
53
+                .getApplicationContext().getSystemService(
54
+                        CONNECTIVITY_SERVICE);
55
+
56
+        if (manager == null) {
57
+            return false;
58
+        }
59
+
60
+        NetworkInfo networkinfo = manager.getActiveNetworkInfo();
61
+        if (networkinfo == null || !networkinfo.isAvailable()) {
62
+            return false;
63
+        }
64
+        return true;
65
+    }
66
+    private void reload(){
67
+        if(isNetworkAvailable()){
68
+            loadContent();
69
+        }else
70
+            loadError();
71
+    }
72
+    private void loadError(){
73
+        setContentView(R.layout.layout_offline);
74
+        Button btn = (Button) findViewById(R.id.reload_btn);
75
+        btn.setOnClickListener(new View.OnClickListener() {
76
+            @Override
77
+            public void onClick(View v) {
78
+                reload();
79
+            }
80
+        });
81
+    }
82
+    private void loadContent(){
35 83
         setContentView(R.layout.activity_main);
84
+
36 85
         setSupportActionBar( (Toolbar) this.findViewById(R.id.main_toolbar));
37 86
         getWindowManager().getDefaultDisplay().getSize(screenOutSize);
38
-
39 87
         this.progressBar = (ProgressBar) this.findViewById(R.id.progressBar);
40 88
         this.listView = (GridView) this.findViewById(R.id.main_gridview);
41 89
         this.adapter = new MainListAdapter(this);
42 90
         listView.setAdapter(adapter);
43 91
 
92
+        listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
93
+            @Override
94
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
95
+                Log.i("aa",view.toString());
96
+            }
97
+
98
+            @Override
99
+            public void onNothingSelected(AdapterView<?> parent) {
100
+
101
+            }
102
+        });
103
+
44 104
         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
45 105
             @Override
46 106
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
107
+                Log.i("aa",view.toString());
47 108
                 MainListAdapter.ViewHolder holder = (MainListAdapter.ViewHolder) view.getTag();
48 109
                 Log.i(TAG, holder.title.getText().toString());
49 110
 
@@ -94,14 +155,59 @@ public class MainActivity extends AppCompatActivity {
94 155
                 startActivity(intent);
95 156
                 break;
96 157
             case R.id.menu_settings:
158
+                demoTask.setShouldFinish(false);
97 159
                 break;
98 160
             case R.id.menu_topic:
99 161
                 break;
100 162
             case R.id.menu_usercenter:
163
+                testPost();
101 164
                 break;
102 165
             case R.id.menu_welcome:
166
+
167
+                testHttp();
168
+
103 169
                 break;
104 170
         }
105 171
         return true;
106 172
     }
173
+
174
+    private void testPost() {
175
+        final ImageApiClient api = new ImageApiClient();
176
+
177
+        new AsyncTask<String,Boolean,String>(){
178
+            @Override
179
+            protected String doInBackground(String[] objects) {
180
+                Map<String, String> param = new HashMap<>();
181
+                param.put("user_name","xzz");
182
+                param.put("age","22");
183
+
184
+                return api.postRaw("http://reefun.cn/youmap-service/",param);
185
+            }
186
+
187
+            @Override
188
+            protected void onPostExecute(String ret) {
189
+                     Toast.makeText(MainActivity.this,ret,Toast.LENGTH_SHORT)
190
+                            .show();
191
+             }
192
+        }.execute();
193
+    }
194
+
195
+    private void testHttp(){
196
+        final ImageApiClient api = new ImageApiClient();
197
+
198
+        new AsyncTask<String,Boolean,List<Feeds>>(){
199
+            @Override
200
+            protected List<Feeds> doInBackground(String[] objects) {
201
+                return api.getRaw("http://reefun.cn/real360/api/feeds/hot?limit=10&offset=0");
202
+            }
203
+
204
+            @Override
205
+            protected void onPostExecute(List<Feeds> ret) {
206
+               for(int i=0;i<ret.size();i++){
207
+                   Toast.makeText(MainActivity.this,ret.get(i).getName(),Toast.LENGTH_SHORT)
208
+                           .show();
209
+               }
210
+            }
211
+        }.execute();
212
+    }
107 213
 }

+ 0
- 5
lesson03/src/main/java/io/hsiao/lesson03/MainListAdapter.java 查看文件

@@ -93,12 +93,7 @@ public class MainListAdapter extends BaseAdapter {
93 93
                 .load("http://reefun.cn/real360/api/obj/thumbnail/" + json.getString("uuid"))
94 94
                 .fit()
95 95
                 .into(holder.thumbnail);
96
-        convertView.setOnClickListener(new View.OnClickListener() {
97
-            @Override
98
-            public void onClick(View v) {
99 96
 
100
-            }
101
-        });
102 97
 
103 98
         return convertView;
104 99
     }

+ 47
- 12
lesson03/src/main/java/io/hsiao/lesson03/PanoActivity.java 查看文件

@@ -4,18 +4,29 @@ import android.content.Intent;
4 4
 import android.graphics.Bitmap;
5 5
 import android.graphics.BitmapFactory;
6 6
 import android.net.Uri;
7
+import android.os.AsyncTask;
7 8
 import android.os.Bundle;
8 9
 import android.support.v7.app.AppCompatActivity;
10
+import android.view.View;
9 11
 import android.view.Window;
10 12
 import android.view.WindowManager;
11 13
 import android.widget.ImageView;
14
+import android.widget.ProgressBar;
12 15
 
13 16
 import com.google.vr.sdk.widgets.pano.VrPanoramaView;
17
+import com.squareup.picasso.Callback;
14 18
 import com.squareup.picasso.Downloader;
19
+import com.squareup.picasso.NetworkPolicy;
20
+import com.squareup.picasso.OkHttpDownloader;
15 21
 import com.squareup.picasso.Picasso;
16 22
 import com.squareup.picasso.UrlConnectionDownloader;
17 23
 
18 24
 import java.io.IOException;
25
+import java.io.InputStream;
26
+
27
+import io.hsiao.lesson03.data.HttpAPI;
28
+
29
+import static com.squareup.picasso.NetworkPolicy.*;
19 30
 
20 31
 public class PanoActivity extends AppCompatActivity {
21 32
 
@@ -23,6 +34,7 @@ public class PanoActivity extends AppCompatActivity {
23 34
     private String imgUrl;
24 35
 
25 36
     private VrPanoramaView vrView;
37
+    private ProgressBar progressBar;
26 38
 
27 39
     @Override
28 40
     protected void onCreate(Bundle savedInstanceState) {
@@ -32,6 +44,8 @@ public class PanoActivity extends AppCompatActivity {
32 44
         //setContentView(R.layout.activity_pano);
33 45
         setContentView(R.layout.activity_gvr_view);
34 46
 
47
+        this.progressBar = (ProgressBar) findViewById(R.id.pano_progressbar);
48
+
35 49
         Intent intent = this.getIntent();
36 50
         this.imgUrl = intent.getStringExtra("img_url");
37 51
         this.vrView = (VrPanoramaView) this.findViewById(R.id.gvr_pano_view);
@@ -39,18 +53,39 @@ public class PanoActivity extends AppCompatActivity {
39 53
 
40 54
     }
41 55
     private void loadGvrPano(){
42
-        UrlConnectionDownloader  dl = new UrlConnectionDownloader(this);
43
-        Uri uri = Uri.parse("http://reefun.cn/real360/api/obj/fetch/" + imgUrl);
44
-        try {
45
-            Downloader.Response resp = dl.load(uri, -1);
46
-            Bitmap bmp = BitmapFactory.decodeStream(resp.getInputStream());
47
-
48
-            VrPanoramaView.Options opt = new VrPanoramaView.Options();
49
-            opt.inputType = VrPanoramaView.Options.TYPE_MONO;
50
-            this.vrView.loadImageFromBitmap(bmp,opt);
51
-        } catch (IOException e) {
52
-            e.printStackTrace();
53
-        }
56
+
57
+        new AsyncTask<String,Boolean,Bitmap>(){
58
+
59
+            @Override
60
+            protected void onCancelled() {
61
+
62
+            }
63
+
64
+            @Override
65
+            protected void onPreExecute() {
66
+                progressBar.setVisibility(View.VISIBLE);
67
+            }
68
+
69
+            @Override
70
+            protected Bitmap doInBackground(String[] args) {
71
+                InputStream in = new HttpAPI("").downloadImg(args[0]);
72
+                return BitmapFactory.decodeStream(in);
73
+            }
74
+
75
+            @Override
76
+            protected void onPostExecute(Bitmap bitmap) {
77
+                VrPanoramaView.Options opt = new VrPanoramaView.Options();
78
+                opt.inputType = VrPanoramaView.Options.TYPE_MONO;
79
+                vrView.loadImageFromBitmap(bitmap,opt);
80
+
81
+                progressBar.setVisibility(View.GONE);
82
+            }
83
+
84
+            @Override
85
+            protected void onProgressUpdate(Boolean... values) {
86
+
87
+            }
88
+        }.execute("http://reefun.cn/real360/api/obj/fetch/"+imgUrl);
54 89
     }
55 90
 
56 91
 }

+ 58
- 0
lesson03/src/main/java/io/hsiao/lesson03/data/DemoTask.java 查看文件

@@ -0,0 +1,58 @@
1
+package io.hsiao.lesson03.data;
2
+
3
+import android.content.Context;
4
+import android.content.Intent;
5
+import android.os.AsyncTask;
6
+import android.util.Log;
7
+import android.widget.Toast;
8
+
9
+import com.alibaba.fastjson.JSONArray;
10
+
11
+import io.hsiao.lesson03.MainActivity;
12
+import io.hsiao.lesson03.PanoActivity;
13
+
14
+/**
15
+ * Created by hsiao on 2018/3/24.
16
+ */
17
+
18
+public class DemoTask extends AsyncTask<String,Integer,String>{
19
+    boolean shouldFinish = true;
20
+    private MainActivity ctx;
21
+
22
+   public  DemoTask(MainActivity ctx){
23
+        this.ctx = ctx;
24
+    }
25
+
26
+    public void setShouldFinish(boolean shouldFinish) {
27
+        this.shouldFinish = shouldFinish;
28
+    }
29
+
30
+    @Override
31
+    protected void onPreExecute() {
32
+
33
+    }
34
+
35
+    @Override
36
+    protected String doInBackground(String[] objects) {
37
+        int n=0;
38
+        HttpAPI api = new HttpAPI("https://www.baidu.com/s?wd="+objects[0]);
39
+        JSONArray data = api.testGet("");
40
+
41
+        return data.toJSONString();
42
+    }
43
+
44
+    @Override
45
+    protected void onPostExecute(String s) {
46
+        Log.i("demo task",s);
47
+        Toast.makeText(ctx,s,Toast.LENGTH_SHORT).show();
48
+        Intent intent = new Intent(ctx, PanoActivity.class);
49
+        intent.putExtra("img_url","cca99c6d-1960-416b-b546-40ec4ee8682e");
50
+
51
+        ctx.startActivity(intent);
52
+    }
53
+
54
+    @Override
55
+    protected void onProgressUpdate(Integer[] values) {
56
+        Toast.makeText(ctx,"进度 "+values[0].toString(),Toast.LENGTH_SHORT).show();
57
+    }
58
+}

+ 19
- 3
lesson03/src/main/java/io/hsiao/lesson03/data/HttpAPI.java 查看文件

@@ -6,8 +6,8 @@ import com.alibaba.fastjson.JSONArray;
6 6
 
7 7
 import java.io.File;
8 8
 import java.io.IOException;
9
+import java.io.InputStream;
9 10
 
10
-import io.hsiao.lesson03.MainListAdapter;
11 11
 import okhttp3.Cache;
12 12
 import okhttp3.OkHttpClient;
13 13
 import okhttp3.Request;
@@ -36,13 +36,29 @@ public class HttpAPI {
36 36
                 .get()
37 37
                 .url(reqUrl)
38 38
                 .build();
39
+        String retString=null;
39 40
         try (Response resp = client.newCall(req).execute()) {
40
-                String retString = resp.body().string();
41
+                retString = resp.body().string();
41 42
                 return JSONArray.parseArray(retString);
42 43
         } catch (Exception ex) {
43 44
             ex.printStackTrace();
45
+            JSONArray array = new JSONArray();
46
+            array.add(retString);
47
+            return array;
44 48
         }
45
-        return null;
46 49
     }
47 50
 
51
+    public InputStream downloadImg(String url){
52
+        Request req = new Request.Builder()
53
+                .get().url(url)
54
+                .build();
55
+
56
+        try {
57
+            Response resp = client.newCall(req).execute();
58
+            return resp.body().byteStream();
59
+        } catch (IOException e) {
60
+            e.printStackTrace();
61
+        }
62
+        return null;
63
+    }
48 64
 }

+ 79
- 0
lesson03/src/main/java/io/hsiao/lesson03/data/ImageApiClient.java 查看文件

@@ -0,0 +1,79 @@
1
+package io.hsiao.lesson03.data;
2
+
3
+import com.alibaba.fastjson.JSONArray;
4
+import com.alibaba.fastjson.JSONObject;
5
+
6
+import java.io.IOException;
7
+import java.util.ArrayList;
8
+import java.util.Iterator;
9
+import java.util.List;
10
+import java.util.Map;
11
+
12
+import io.hsiao.lesson03.model.Feeds;
13
+import okhttp3.CacheControl;
14
+import okhttp3.FormBody;
15
+import okhttp3.MultipartBody;
16
+import okhttp3.OkHttpClient;
17
+import okhttp3.Request;
18
+import okhttp3.Response;
19
+
20
+/**
21
+ * Created by hsiao on 2018/3/24.
22
+ */
23
+
24
+public class ImageApiClient {
25
+    private OkHttpClient client;
26
+
27
+    public ImageApiClient(){
28
+        this.client = new OkHttpClient.Builder()
29
+                .build();
30
+    }
31
+
32
+    public String postRaw(String url, Map<String,String> param ){
33
+        FormBody.Builder bodyBldr = new FormBody.Builder();
34
+
35
+        Iterator<Map.Entry<String, String>> iter = param.entrySet().iterator();
36
+        while(iter.hasNext()){
37
+            Map.Entry<String, String> kv = iter.next();
38
+            bodyBldr.add(kv.getKey(),kv.getValue());
39
+        }
40
+
41
+        Request request = new Request.Builder()
42
+                .post(bodyBldr.build())
43
+                .url(url)
44
+                .build();
45
+
46
+        try {
47
+            Response resp = client.newCall(request).execute();
48
+            return resp.body().string();
49
+        } catch (IOException e) {
50
+            e.printStackTrace();
51
+        }
52
+        return null;
53
+    }
54
+
55
+    public List<Feeds> getRaw(String url){
56
+        Request request = new Request.Builder()
57
+                            .get()
58
+                            .addHeader("User-Agent","youmap/http")
59
+                            .cacheControl(CacheControl.FORCE_NETWORK)
60
+                            .url(url)
61
+                            .build();
62
+
63
+        try {
64
+            Response response = client.newCall(request).execute();
65
+            String str = response.body().string() ;
66
+            JSONArray array = JSONArray.parseArray(str);
67
+
68
+            List<Feeds> feedsList = new ArrayList<Feeds>();
69
+            for(int i=0;i<array.size();i++){
70
+                feedsList.add(JSONObject.toJavaObject(array.getJSONObject(i),Feeds.class));
71
+            }
72
+
73
+            return feedsList;
74
+        } catch (IOException e) {
75
+            e.printStackTrace();
76
+        }
77
+        return null;
78
+    }
79
+}

+ 73
- 0
lesson03/src/main/java/io/hsiao/lesson03/model/Feeds.java 查看文件

@@ -0,0 +1,73 @@
1
+package io.hsiao.lesson03.model;
2
+
3
+import java.util.Date;
4
+
5
+/**
6
+ * Created by hsiao on 2018/3/24.
7
+ */
8
+
9
+public class Feeds {
10
+    private String uuid;
11
+    private int user_id;
12
+    private String container;
13
+    private String name;
14
+    private String description;
15
+    private int create_time;
16
+    private int likes;
17
+
18
+    public String getUuid() {
19
+        return uuid;
20
+    }
21
+
22
+    public void setUuid(String uuid) {
23
+        this.uuid = uuid;
24
+    }
25
+
26
+    public int getUser_id() {
27
+        return user_id;
28
+    }
29
+
30
+    public void setUser_id(int user_id) {
31
+        this.user_id = user_id;
32
+    }
33
+
34
+    public String getContainer() {
35
+        return container;
36
+    }
37
+
38
+    public void setContainer(String container) {
39
+        this.container = container;
40
+    }
41
+
42
+    public String getName() {
43
+        return name;
44
+    }
45
+
46
+    public void setName(String name) {
47
+        this.name = name;
48
+    }
49
+
50
+    public String getDescription() {
51
+        return description;
52
+    }
53
+
54
+    public void setDescription(String description) {
55
+        this.description = description;
56
+    }
57
+
58
+    public int getCreate_time() {
59
+        return create_time;
60
+    }
61
+
62
+    public void setCreate_time(int create_time) {
63
+        this.create_time = create_time;
64
+    }
65
+
66
+    public int getLikes() {
67
+        return likes;
68
+    }
69
+
70
+    public void setLikes(int likes) {
71
+        this.likes = likes;
72
+    }
73
+}

+ 14
- 2
lesson03/src/main/res/layout/activity_gvr_view.xml 查看文件

@@ -10,7 +10,19 @@
10 10
         android:id="@+id/gvr_pano_view"
11 11
         android:layout_width="match_parent"
12 12
         android:layout_height="match_parent"
13
-        android:scrollbars="@null"
14
-        />
13
+        android:scrollbars="@null">
14
+
15
+    </com.google.vr.sdk.widgets.pano.VrPanoramaView>
16
+
17
+    <ProgressBar
18
+        android:id="@+id/pano_progressbar"
19
+        style="@style/Widget.AppCompat.ProgressBar"
20
+        android:layout_width="wrap_content"
21
+        android:layout_height="wrap_content"
22
+        android:progressDrawable="@color/colorAccent"
23
+        app:layout_constraintBottom_toBottomOf="parent"
24
+        app:layout_constraintEnd_toEndOf="parent"
25
+        app:layout_constraintStart_toStartOf="parent"
26
+        app:layout_constraintTop_toTopOf="parent" />
15 27
 
16 28
 </android.support.constraint.ConstraintLayout>

+ 22
- 0
lesson03/src/main/res/layout/layout_offline.xml 查看文件

@@ -0,0 +1,22 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+
3
+
4
+<android.support.constraint.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
5
+    android:layout_height="match_parent"
6
+    android:layout_width="match_parent"
7
+    xmlns:android="http://schemas.android.com/apk/res/android">
8
+
9
+    <Button
10
+        android:id="@+id/reload_btn"
11
+        style="@style/Widget.AppCompat.Button.Borderless"
12
+        android:layout_width="wrap_content"
13
+        android:layout_height="wrap_content"
14
+        android:text="无法访问互联网,轻触重试"
15
+        android:textColor="@color/colorGrey"
16
+        android:textSize="18sp"
17
+        app:layout_constraintBottom_toBottomOf="parent"
18
+        app:layout_constraintEnd_toEndOf="parent"
19
+        app:layout_constraintStart_toStartOf="parent"
20
+        app:layout_constraintTop_toTopOf="parent" />
21
+</android.support.constraint.ConstraintLayout>
22
+

+ 16
- 1
lesson03/src/main/res/layout/main_listview_item.xml 查看文件

@@ -5,7 +5,10 @@
5 5
     xmlns:tools="http://schemas.android.com/tools"
6 6
     android:layout_width="match_parent"
7 7
     android:layout_height="match_parent"
8
-    android:layout_weight="1">
8
+    android:layout_weight="1"
9
+    android:focusable="false"
10
+    android:focusableInTouchMode="false"
11
+    android:descendantFocusability="blocksDescendants">
9 12
 
10 13
 
11 14
     <ImageView
@@ -13,6 +16,8 @@
13 16
         android:layout_width="wrap_content"
14 17
         android:layout_height="wrap_content"
15 18
         android:layout_weight="1"
19
+        android:focusable="false"
20
+        android:focusableInTouchMode="false"
16 21
         app:layout_constraintStart_toStartOf="parent"
17 22
         app:layout_constraintTop_toTopOf="parent"
18 23
         app:srcCompat="@android:drawable/ic_menu_report_image" />
@@ -23,6 +28,8 @@
23 28
         android:layout_height="wrap_content"
24 29
         android:layout_marginTop="8dp"
25 30
         android:layout_weight="1"
31
+        android:focusable="false"
32
+        android:focusableInTouchMode="false"
26 33
         android:paddingLeft="5dp"
27 34
         android:paddingRight="5dp"
28 35
         android:text="TextView"
@@ -37,6 +44,8 @@
37 44
         android:layout_height="wrap_content"
38 45
         android:layout_marginTop="8dp"
39 46
         android:layout_weight="1"
47
+        android:focusable="false"
48
+        android:focusableInTouchMode="false"
40 49
         android:text="TextView"
41 50
         android:textColor="@color/colorGrey"
42 51
         android:textSize="13sp"
@@ -52,6 +61,8 @@
52 61
         android:layout_marginBottom="8dp"
53 62
         android:layout_marginEnd="8dp"
54 63
         android:layout_weight="1"
64
+        android:focusable="false"
65
+        android:focusableInTouchMode="false"
55 66
         android:text="2018-01-01"
56 67
         android:textColor="@color/colorWhite"
57 68
         android:textSize="10sp"
@@ -65,6 +76,8 @@
65 76
         android:layout_marginEnd="8dp"
66 77
         android:layout_marginTop="8dp"
67 78
         android:layout_weight="1"
79
+        android:focusable="false"
80
+        android:focusableInTouchMode="false"
68 81
         android:text="0"
69 82
         android:textColor="@color/colorWhite"
70 83
         android:textSize="10sp"
@@ -75,6 +88,8 @@
75 88
         android:id="@+id/ic_likes"
76 89
         android:layout_width="15dp"
77 90
         android:layout_height="15dp"
91
+        android:focusable="false"
92
+        android:focusableInTouchMode="false"
78 93
         app:layout_constraintBottom_toBottomOf="@+id/main_list_likes"
79 94
         app:layout_constraintEnd_toStartOf="@+id/main_list_likes"
80 95
         app:srcCompat="@drawable/ic_action_favor_border" />

正在加载...
取消
保存