回答編集履歴

3

カッコ閉じ忘れ

2016/01/02 05:09

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -84,6 +84,8 @@
84
84
 
85
85
  adapter.addClicked(position);
86
86
 
87
+ }
88
+
87
89
  }
88
90
 
89
91
 

2

コード

2016/01/02 05:09

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -7,3 +7,89 @@
7
7
 
8
8
 
9
9
  リスト表示するデータが独自クラスのものであれば、そのクラスに「クリックされたか」などという状態を表すフラグを持たせておいて、アダプタのgetViewでそのフラグの状態を見てレイアウトを選択する、という方法も考えられます。
10
+
11
+
12
+
13
+ ---
14
+
15
+
16
+
17
+ アダプタにおいて
18
+
19
+ ```java
20
+
21
+ public class TestAdapter extends ArrayAdapter<Test> {
22
+
23
+
24
+
25
+ private Set<Integer> clickedRow = new HashSet<Integer>();
26
+
27
+
28
+
29
+ ....
30
+
31
+
32
+
33
+ //クリックされた列を追加する
34
+
35
+ public void addClicked(int position){
36
+
37
+ clickedRow.add(position);
38
+
39
+ //情報が更新されたことをリストに通知し、画面を更新する
40
+
41
+ notifyDataSetChanged();
42
+
43
+ }
44
+
45
+
46
+
47
+ public View getView (int position, View convertView, ViewGroup parent){
48
+
49
+ if(clickedRow.contains(position)){
50
+
51
+ //「クリックされた列」の場合のレイアウト設定
52
+
53
+ } else {
54
+
55
+ //「クリックされていない列」の場合のレイアウト設定
56
+
57
+ }
58
+
59
+ }
60
+
61
+ }
62
+
63
+ ```
64
+
65
+ こんな感じのことをして、ListViewのクリックイベントにおいて
66
+
67
+ ```java
68
+
69
+ public class MyActivity extends Activity {
70
+
71
+
72
+
73
+ protected void onCreate(Bundle savedInstanceState) {
74
+
75
+ ....
76
+
77
+ listView.setOnItemClickListener(new OnItemClickListener(){
78
+
79
+ @Override
80
+
81
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
82
+
83
+ TestAdapter adapter = (TestAdapter)listView.getAdapter();
84
+
85
+ adapter.addClicked(position);
86
+
87
+ }
88
+
89
+
90
+
91
+ }
92
+
93
+ ```
94
+
95
+ こんな感じでできないでしょうか(未検証です)。

1

リスト表示するデータが独自クラスならば

2016/01/02 05:08

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -3,3 +3,7 @@
3
3
  onItemClickedの時にクリックした列番号の情報をアダプタに伝えて、
4
4
 
5
5
  アダプタ内でその列番号に対するgetViewで使うレイアウトを変更するくらいでしょうか…。
6
+
7
+
8
+
9
+ リスト表示するデータが独自クラスのものであれば、そのクラスに「クリックされたか」などという状態を表すフラグを持たせておいて、アダプタのgetViewでそのフラグの状態を見てレイアウトを選択する、という方法も考えられます。