回答編集履歴

1

補足

2018/08/22 15:23

投稿

kakajika
kakajika

スコア3131

test CHANGED
@@ -7,3 +7,65 @@
7
7
 
8
8
 
9
9
  余談ですが、外部からアクセスできるようにするために変数やメソッドをstaticで宣言するのはオブジェクト指向の考え方に反するものであり、あまりオススメできません。(いわゆるstaticおじさんというやつです)そのあたりも修正しておいた方が今後バグを起こす可能性を減らせてよいと思います。
10
+
11
+
12
+
13
+ **補足: staticを使わない方法について**
14
+
15
+
16
+
17
+ いくらかやり方はありますが、簡単なのはActivityの中でMyArrayAdapterを継承したクラスを作り、そこでFilterを実装するものです。
18
+
19
+
20
+
21
+ ```java
22
+
23
+ private void setList(){
24
+
25
+ MyArrayAdapter adapter = new MyArrayAdapter(...) {
26
+
27
+ private Filter filter = new Filter() {
28
+
29
+ @Override
30
+
31
+ protected FilterResults performFiltering(CharSequence constraint) {
32
+
33
+ ...
34
+
35
+ }
36
+
37
+
38
+
39
+ @Override
40
+
41
+ protected void publishResults(CharSequence constraint, FilterResults results) {
42
+
43
+ // ここならActiviyのメソッドが呼べる
44
+
45
+ }
46
+
47
+ };
48
+
49
+
50
+
51
+ @NotNull
52
+
53
+ @Override
54
+
55
+ public Filter getFilter() {
56
+
57
+ return filter;
58
+
59
+ }
60
+
61
+ };
62
+
63
+
64
+
65
+ ...
66
+
67
+ listView.setAdapter(adapter);
68
+
69
+ }
70
+
71
+ ```