Przeglądaj źródła

Getview Thread 에서 호출하는 문제 수정

june9152 5 lat temu
rodzic
commit
6bdc482353

+ 37 - 35
app/src/main/java/com/example/repeater/ListViewAdapter.java

@@ -16,7 +16,7 @@ import java.util.ArrayList;
16
 
16
 
17
 public class ListViewAdapter extends BaseAdapter {
17
 public class ListViewAdapter extends BaseAdapter {
18
     // Adapter에 추가된 데이터를 저장하기 위한 ArrayList
18
     // Adapter에 추가된 데이터를 저장하기 위한 ArrayList
19
-    private ArrayList<ListViewItem> listViewItemList = new ArrayList<ListViewItem>() ;
19
+    private ArrayList<ListViewItem> listViewItemList = new ArrayList<ListViewItem>();
20
     private ArrayList<ListViewItem> filteredItemList = listViewItemList;
20
     private ArrayList<ListViewItem> filteredItemList = listViewItemList;
21
 
21
 
22
     // ListViewAdapter의 생성자
22
     // ListViewAdapter의 생성자
@@ -27,7 +27,7 @@ public class ListViewAdapter extends BaseAdapter {
27
     // Adapter에 사용되는 데이터의 개수를 리턴. : 필수 구현
27
     // Adapter에 사용되는 데이터의 개수를 리턴. : 필수 구현
28
     @Override
28
     @Override
29
     public int getCount() {
29
     public int getCount() {
30
-        return filteredItemList.size() ;
30
+        return filteredItemList.size();
31
     }
31
     }
32
 
32
 
33
     // position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴. : 필수 구현
33
     // position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴. : 필수 구현
@@ -45,18 +45,18 @@ public class ListViewAdapter extends BaseAdapter {
45
             holder = new ViewHolder();
45
             holder = new ViewHolder();
46
             LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
46
             LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
47
             convertView = inflater.inflate(R.layout.activity_list_view_item, parent, false);
47
             convertView = inflater.inflate(R.layout.activity_list_view_item, parent, false);
48
-            holder.editText = (EditText)convertView.findViewById(R.id.editText);
48
+            holder.editText = (EditText) convertView.findViewById(R.id.editText);
49
             convertView.setTag(holder);
49
             convertView.setTag(holder);
50
-        }else{
51
-            holder = (ViewHolder)convertView.getTag();
50
+        } else {
51
+            holder = (ViewHolder) convertView.getTag();
52
         }
52
         }
53
         holder.ref = position;
53
         holder.ref = position;
54
 //        Log.d("getView", String.valueOf(position));
54
 //        Log.d("getView", String.valueOf(position));
55
         // 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
55
         // 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
56
-        TextView descTextView = (TextView) convertView.findViewById(R.id.textView13) ;
57
-        TextView valTextView  = (TextView) convertView.findViewById(R.id.textView14) ;
56
+        TextView descTextView = (TextView) convertView.findViewById(R.id.textView13);
57
+        TextView valTextView = (TextView) convertView.findViewById(R.id.textView14);
58
 
58
 
59
-        final EditText valeditText  = (EditText) convertView.findViewById(R.id.editText) ;
59
+        final EditText valeditText = (EditText) convertView.findViewById(R.id.editText);
60
         valeditText.addTextChangedListener(new TextWatcher() {
60
         valeditText.addTextChangedListener(new TextWatcher() {
61
             @Override
61
             @Override
62
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
62
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -70,14 +70,14 @@ public class ListViewAdapter extends BaseAdapter {
70
 
70
 
71
             @Override
71
             @Override
72
             public void afterTextChanged(Editable s) {
72
             public void afterTextChanged(Editable s) {
73
-                Log.d("getView",s.toString() );
73
+                Log.d("getView", s.toString());
74
                 filteredItemList.get(holder.ref).setVal(s.toString());
74
                 filteredItemList.get(holder.ref).setVal(s.toString());
75
 
75
 
76
 //                valeditText.setText(s.toString());
76
 //                valeditText.setText(s.toString());
77
 //                valeditText.setText();
77
 //                valeditText.setText();
78
             }
78
             }
79
         });
79
         });
80
-        EditText valeditText1  = (EditText) convertView.findViewById(R.id.editText1) ;
80
+        EditText valeditText1 = (EditText) convertView.findViewById(R.id.editText1);
81
         valeditText1.addTextChangedListener(new TextWatcher() {
81
         valeditText1.addTextChangedListener(new TextWatcher() {
82
             @Override
82
             @Override
83
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
83
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -96,7 +96,7 @@ public class ListViewAdapter extends BaseAdapter {
96
 
96
 
97
             }
97
             }
98
         });
98
         });
99
-        EditText valeditText2  = (EditText) convertView.findViewById(R.id.editText2) ;
99
+        EditText valeditText2 = (EditText) convertView.findViewById(R.id.editText2);
100
         valeditText2.addTextChangedListener(new TextWatcher() {
100
         valeditText2.addTextChangedListener(new TextWatcher() {
101
             @Override
101
             @Override
102
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
102
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -115,22 +115,19 @@ public class ListViewAdapter extends BaseAdapter {
115
                 filteredItemList.get(holder.ref).setVal2(s.toString());
115
                 filteredItemList.get(holder.ref).setVal2(s.toString());
116
             }
116
             }
117
         });
117
         });
118
-        final Button valbutton      = (Button) convertView.findViewById(R.id.listView_button) ;
118
+        final Button valbutton = (Button) convertView.findViewById(R.id.listView_button);
119
         valbutton.setOnClickListener(new Button.OnClickListener() {
119
         valbutton.setOnClickListener(new Button.OnClickListener() {
120
             public void onClick(View v) {
120
             public void onClick(View v) {
121
-                if(valbutton.getText() =="ON") {
121
+                if (valbutton.getText() == "ON") {
122
                     valbutton.setText("OFF");
122
                     valbutton.setText("OFF");
123
-                }
124
-                else if(valbutton.getText()  == "OFF") {
123
+                } else if (valbutton.getText() == "OFF") {
125
                     valbutton.setText("ON");
124
                     valbutton.setText("ON");
126
-                }
127
-                else if (valbutton.getText()  == "MANUAL") {
125
+                } else if (valbutton.getText() == "MANUAL") {
128
                     valbutton.setText("AUTO");
126
                     valbutton.setText("AUTO");
129
-                }
130
-                else if (valbutton.getText()  == "AUTO") {
127
+                } else if (valbutton.getText() == "AUTO") {
131
                     valbutton.setText("MANUAL");
128
                     valbutton.setText("MANUAL");
132
                 }
129
                 }
133
-              //  valbutton.setText("OFF");
130
+                //  valbutton.setText("OFF");
134
             }
131
             }
135
         });
132
         });
136
         // Data Set(listViewItemList)에서 position에 위치한 데이터 참조 획득
133
         // Data Set(listViewItemList)에서 position에 위치한 데이터 참조 획득
@@ -140,24 +137,25 @@ public class ListViewAdapter extends BaseAdapter {
140
         valbutton.setVisibility(View.VISIBLE);
137
         valbutton.setVisibility(View.VISIBLE);
141
         valeditText1.setVisibility(View.VISIBLE);
138
         valeditText1.setVisibility(View.VISIBLE);
142
         valeditText2.setVisibility(View.VISIBLE);
139
         valeditText2.setVisibility(View.VISIBLE);
140
+
143
         // 아이템 내 각 위젯에 데이터 반영
141
         // 아이템 내 각 위젯에 데이터 반영
144
-        descTextView.setText(listViewItem.getDesc());
145
-        if(listViewItem.getMode() == "READ") {
142
+        {
143
+            descTextView.setText(listViewItem.getDesc());
144
+        }
145
+        if (listViewItem.getMode() == "READ") {
146
             valTextView.setText(listViewItem.getVal());
146
             valTextView.setText(listViewItem.getVal());
147
             valeditText.setVisibility(View.INVISIBLE);
147
             valeditText.setVisibility(View.INVISIBLE);
148
             valeditText1.setVisibility(View.INVISIBLE);
148
             valeditText1.setVisibility(View.INVISIBLE);
149
             valeditText2.setVisibility(View.INVISIBLE);
149
             valeditText2.setVisibility(View.INVISIBLE);
150
             valbutton.setVisibility(View.INVISIBLE);
150
             valbutton.setVisibility(View.INVISIBLE);
151
 
151
 
152
-        }
153
-        else if(listViewItem.getMode() == "EDIT") {
152
+        } else if (listViewItem.getMode() == "EDIT") {
154
             valTextView.setVisibility(View.INVISIBLE);
153
             valTextView.setVisibility(View.INVISIBLE);
155
             valeditText.setText(listViewItem.getVal());
154
             valeditText.setText(listViewItem.getVal());
156
             valeditText1.setVisibility(View.INVISIBLE);
155
             valeditText1.setVisibility(View.INVISIBLE);
157
             valeditText2.setVisibility(View.INVISIBLE);
156
             valeditText2.setVisibility(View.INVISIBLE);
158
             valbutton.setVisibility(View.INVISIBLE);
157
             valbutton.setVisibility(View.INVISIBLE);
159
-        }
160
-        else if(listViewItem.getMode() == "EDIT2") {
158
+        } else if (listViewItem.getMode() == "EDIT2") {
161
             valTextView.setVisibility(View.INVISIBLE);
159
             valTextView.setVisibility(View.INVISIBLE);
162
             valeditText1.setVisibility(View.VISIBLE);
160
             valeditText1.setVisibility(View.VISIBLE);
163
             valeditText2.setVisibility(View.VISIBLE);
161
             valeditText2.setVisibility(View.VISIBLE);
@@ -165,15 +163,14 @@ public class ListViewAdapter extends BaseAdapter {
165
             valbutton.setVisibility(View.INVISIBLE);
163
             valbutton.setVisibility(View.INVISIBLE);
166
             valeditText1.setText(listViewItem.getVal());
164
             valeditText1.setText(listViewItem.getVal());
167
             valeditText2.setText(listViewItem.getVal2());
165
             valeditText2.setText(listViewItem.getVal2());
168
-        }
169
-        else if(listViewItem.getMode() == "BUTTON") {
166
+        } else if (listViewItem.getMode() == "BUTTON") {
170
             valTextView.setVisibility(View.INVISIBLE);
167
             valTextView.setVisibility(View.INVISIBLE);
171
             valeditText.setVisibility(View.INVISIBLE);
168
             valeditText.setVisibility(View.INVISIBLE);
172
             valeditText1.setVisibility(View.INVISIBLE);
169
             valeditText1.setVisibility(View.INVISIBLE);
173
             valeditText2.setVisibility(View.INVISIBLE);
170
             valeditText2.setVisibility(View.INVISIBLE);
174
             valbutton.setVisibility(View.VISIBLE);
171
             valbutton.setVisibility(View.VISIBLE);
175
             valbutton.setText(listViewItem.getVal());
172
             valbutton.setText(listViewItem.getVal());
176
-        }else{
173
+        } else {
177
             valeditText1.setVisibility(View.INVISIBLE);
174
             valeditText1.setVisibility(View.INVISIBLE);
178
             valeditText2.setVisibility(View.INVISIBLE);
175
             valeditText2.setVisibility(View.INVISIBLE);
179
             valTextView.setVisibility(View.INVISIBLE);
176
             valTextView.setVisibility(View.INVISIBLE);
@@ -181,34 +178,38 @@ public class ListViewAdapter extends BaseAdapter {
181
             valbutton.setVisibility(View.VISIBLE);
178
             valbutton.setVisibility(View.VISIBLE);
182
             //   valbutton.setText(listViewItem.getVal());
179
             //   valbutton.setText(listViewItem.getVal());
183
         }
180
         }
184
-
181
+        Log.d("getView", String.valueOf(getItem(position)) + "Position : " + position);
185
 //        descTextView.setBackgroundColor();
182
 //        descTextView.setBackgroundColor();
186
         return convertView;
183
         return convertView;
187
     }
184
     }
185
+
188
     // 지정한 위치(position)에 있는 데이터와 관계된 아이템(row)의 ID를 리턴. : 필수 구현
186
     // 지정한 위치(position)에 있는 데이터와 관계된 아이템(row)의 ID를 리턴. : 필수 구현
189
     @Override
187
     @Override
190
     public long getItemId(int position) {
188
     public long getItemId(int position) {
191
-        return position ;
189
+        return position;
192
     }
190
     }
193
 
191
 
194
     // 지정한 위치(position)에 있는 데이터 리턴 : 필수 구현
192
     // 지정한 위치(position)에 있는 데이터 리턴 : 필수 구현
195
     @Override
193
     @Override
196
     public Object getItem(int position) {
194
     public Object getItem(int position) {
197
-        return filteredItemList.get(position) ;
195
+        return filteredItemList.get(position);
198
     }
196
     }
199
-    public void setItem(String desc,String val,String val2,String mode,int position) {
197
+
198
+    public void setItem(String desc, String val, String val2, String mode, int position) {
200
         ListViewItem item = new ListViewItem();
199
         ListViewItem item = new ListViewItem();
201
         item.setDesc(desc);
200
         item.setDesc(desc);
202
         item.setMode(mode);
201
         item.setMode(mode);
203
         item.setVal(val);
202
         item.setVal(val);
204
         item.setVal2(val2);
203
         item.setVal2(val2);
205
-        filteredItemList.set(position,item) ;
204
+        filteredItemList.set(position, item);
206
     }
205
     }
206
+
207
     public void removeItem(int position) {
207
     public void removeItem(int position) {
208
         filteredItemList.remove(position);
208
         filteredItemList.remove(position);
209
     }
209
     }
210
+
210
     // 아이템 데이터 추가를 위한 함수. 개발자가 원하는대로 작성 가능.
211
     // 아이템 데이터 추가를 위한 함수. 개발자가 원하는대로 작성 가능.
211
-    public void addItem(String desc,String val,String val2,String mode) {
212
+    public void addItem(String desc, String val, String val2, String mode) {
212
         ListViewItem item = new ListViewItem();
213
         ListViewItem item = new ListViewItem();
213
 
214
 
214
         item.setDesc(desc);
215
         item.setDesc(desc);
@@ -219,6 +220,7 @@ public class ListViewAdapter extends BaseAdapter {
219
         filteredItemList.add(item);
220
         filteredItemList.add(item);
220
     }
221
     }
221
 }
222
 }
223
+
222
 class ViewHolder {
224
 class ViewHolder {
223
     EditText editText;
225
     EditText editText;
224
     EditText editText1;
226
     EditText editText1;

+ 3 - 3
app/src/main/java/com/example/repeater/MainActivity.java

@@ -178,7 +178,7 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
178
 
178
 
179
         listview = (ListView) findViewById(R.id.listview_rf_set);
179
         listview = (ListView) findViewById(R.id.listview_rf_set);
180
         listview.setAdapter(adapter_rf_set);
180
         listview.setAdapter(adapter_rf_set);
181
-        adapter_rf_set.addItem("input ATT", " ", " 1", "EDIT2");
181
+        adapter_rf_set.addItem("input ATT", " ", "", "EDIT2");
182
         adapter_rf_set.addItem("Output ATT", " ", " ", "EDIT2");
182
         adapter_rf_set.addItem("Output ATT", " ", " ", "EDIT2");
183
         adapter_rf_set.addItem("Input Offset ATT", "", " ", "EDIT2");
183
         adapter_rf_set.addItem("Input Offset ATT", "", " ", "EDIT2");
184
         adapter_rf_set.addItem("Output Offset ATT", "", " ", "EDIT2");
184
         adapter_rf_set.addItem("Output Offset ATT", "", " ", "EDIT2");
@@ -343,8 +343,8 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
343
                                 adapter_rf.setItem("Temperature", str, "", "READ", 11);
343
                                 adapter_rf.setItem("Temperature", str, "", "READ", 11);
344
                                 adapter_rf_set.setItem("Temperature", str, "", "READ", 11);
344
                                 adapter_rf_set.setItem("Temperature", str, "", "READ", 11);
345
                                 Prev_RecvStr = str;
345
                                 Prev_RecvStr = str;
346
-                                adapter_rf.notifyDataSetChanged();
347
-                                adapter_rf_set.notifyDataSetChanged();
346
+//                                adapter_rf.notifyDataSetChanged();
347
+//                                adapter_rf_set.notifyDataSetChanged();
348
                                 Log.d("Mainactivity.class / runOnUiThread", "isConnection_Status : " + isConnection_Status());
348
                                 Log.d("Mainactivity.class / runOnUiThread", "isConnection_Status : " + isConnection_Status());
349
                             }
349
                             }
350
 //
350
 //

+ 16 - 2
app/src/main/java/com/example/repeater/send.java

@@ -3,6 +3,7 @@ package com.example.repeater;
3
         import android.content.Context;
3
         import android.content.Context;
4
         import android.util.Log;
4
         import android.util.Log;
5
 
5
 
6
+        import java.io.ByteArrayOutputStream;
6
         import java.io.DataOutputStream;
7
         import java.io.DataOutputStream;
7
         import java.io.OutputStream;
8
         import java.io.OutputStream;
8
         import java.net.Socket;
9
         import java.net.Socket;
@@ -16,6 +17,7 @@ public class send extends TimerTask {
16
     private String message = "hello!";
17
     private String message = "hello!";
17
     private byte[] b = {'d','a','t','a','1','2','\r','\n'};
18
     private byte[] b = {'d','a','t','a','1','2','\r','\n'};
18
     private MainActivity mAcitivity = null;
19
     private MainActivity mAcitivity = null;
20
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream( 1024);
19
     public send(Socket socket,MainActivity Acitivity){
21
     public send(Socket socket,MainActivity Acitivity){
20
         try{
22
         try{
21
             this.mAcitivity = Acitivity;
23
             this.mAcitivity = Acitivity;
@@ -26,14 +28,26 @@ public class send extends TimerTask {
26
         }catch(Exception e){
28
         }catch(Exception e){
27
             Log.e("send.class / 전송 객체 초기화","실패");
29
             Log.e("send.class / 전송 객체 초기화","실패");
28
         }
30
         }
31
+
32
+
33
+
34
+
35
+
36
+
29
     }
37
     }
38
+    //byte[] data = {"abcdefghijklmnopqrxtuvwxyz"};
39
+    String data = "abcdefghijklmnopqrxtuvwxyz";
40
+    byte[] buffers = data.getBytes();
41
+
30
     @Override
42
     @Override
31
     public void run() {
43
     public void run() {
32
         try {
44
         try {
33
             String testdata = String.valueOf((this.mAcitivity).Send_Test());
45
             String testdata = String.valueOf((this.mAcitivity).Send_Test());
34
             Log.d("send.class / run", testdata);
46
             Log.d("send.class / run", testdata);
35
-            dos.writeBytes(testdata);
36
-            //dos.write(b, 0, b.length);
47
+//            byteArrayOutputStream.write(data, 0, 5);
48
+//            dos.writeChars(testdata);
49
+
50
+            dos.write(buffers, 0, buffers.length);
37
             Log.d("send.class / 메시지 전송", "성공");
51
             Log.d("send.class / 메시지 전송", "성공");
38
         }catch(Exception e){
52
         }catch(Exception e){
39
             Log.e("send.class / 전송 객체 초기화","실패");
53
             Log.e("send.class / 전송 객체 초기화","실패");

+ 1 - 3
app/src/main/res/layout/activity_list_view_item.xml

@@ -3,7 +3,7 @@
3
     android:orientation="horizontal" android:layout_width="match_parent"
3
     android:orientation="horizontal" android:layout_width="match_parent"
4
     android:layout_height="match_parent">
4
     android:layout_height="match_parent">
5
 
5
 
6
-        <LinearLayout
6
+                <LinearLayout
7
             android:layout_width="match_parent"
7
             android:layout_width="match_parent"
8
             android:layout_height="match_parent"
8
             android:layout_height="match_parent"
9
             android:layout_weight="2"
9
             android:layout_weight="2"
@@ -19,8 +19,6 @@
19
                     android:textColor="#000000"
19
                     android:textColor="#000000"
20
                     android:textSize="24sp" />
20
                     android:textSize="24sp" />
21
 
21
 
22
-
23
-
24
                         <FrameLayout
22
                         <FrameLayout
25
                             android:layout_width="wrap_content"
23
                             android:layout_width="wrap_content"
26
                             android:layout_height="match_parent">
24
                             android:layout_height="match_parent">