teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

修正

2019/12/21 05:28

投稿

kashikoma
kashikoma

スコア8

title CHANGED
File without changes
body CHANGED
@@ -192,66 +192,4 @@
192
192
  realm.close();
193
193
  }
194
194
  }
195
- ```
196
- MemoAdapter(修正後)
197
- ---
198
- ```ここに言語を入力
199
- public class MemoAdapter extends RealmRecyclerViewAdapter<Memo, MemoAdapter.MemoViewHolder> {
200
- private OrderedRealmCollection<Memo> mDataset;
201
- private MemoListActivity memoListActivity;
202
- private static final String TAG = "MemoAdapter";
203
-
204
- //フラグメント遷移処理メソッドを持つアクティビティを設定
205
- void setActivity(MemoListActivity mActivity) {
206
- Log.d(TAG, "setActivity1 = " + memoListActivity);
207
- this.memoListActivity = mActivity;
208
- Log.d(TAG, "setActivity2 = " + memoListActivity);
209
- }
210
-
211
- MemoAdapter(OrderedRealmCollection<Memo> memoDataset) {
212
- super(memoDataset, true);
213
- this.mDataset = memoDataset;
214
- setHasStableIds(true);
215
- }
216
-
217
- @Override
218
- public MemoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
219
- View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem_memolist, parent, false);
220
- return new MemoViewHolder(view);
221
- }
222
-
223
- @Override
224
- public void onBindViewHolder(final MemoViewHolder holder, final int position){
225
- final Memo obj = getItem(position);
226
- holder.memo.setText(obj.getMemo());
227
- holder.id.setText(obj.getId());
228
-
229
- // アイテムクリックされたら編集画面へ
230
- holder.itemView.setOnClickListener(new View.OnClickListener() {
231
- @Override
232
- public void onClick(View v) {
233
- final String id = obj.getId();
234
- Log.d(TAG, "id onClick itemView = " + id);
235
- Log.d(TAG, "onClick itemView = " + memoListActivity);
236
- memoListActivity.replaceToEditMemoFragment(id);
237
- }
238
- });
239
- }
240
-
241
- @Override
242
- public int getItemCount() {
243
- return mDataset.size();
244
- }
245
-
246
- static class MemoViewHolder extends RecyclerView.ViewHolder {
247
- TextView memo;
248
- TextView id;
249
-
250
- MemoViewHolder(View view) {
251
- super(view);
252
- memo = view.findViewById(R.id.memoContent);
253
- id = view.findViewById(R.id.memoId);
254
- }
255
- }
256
- }
257
195
  ```

2

コードを追記

2019/12/21 05:28

投稿

kashikoma
kashikoma

スコア8

title CHANGED
File without changes
body CHANGED
@@ -192,4 +192,66 @@
192
192
  realm.close();
193
193
  }
194
194
  }
195
+ ```
196
+ MemoAdapter(修正後)
197
+ ---
198
+ ```ここに言語を入力
199
+ public class MemoAdapter extends RealmRecyclerViewAdapter<Memo, MemoAdapter.MemoViewHolder> {
200
+ private OrderedRealmCollection<Memo> mDataset;
201
+ private MemoListActivity memoListActivity;
202
+ private static final String TAG = "MemoAdapter";
203
+
204
+ //フラグメント遷移処理メソッドを持つアクティビティを設定
205
+ void setActivity(MemoListActivity mActivity) {
206
+ Log.d(TAG, "setActivity1 = " + memoListActivity);
207
+ this.memoListActivity = mActivity;
208
+ Log.d(TAG, "setActivity2 = " + memoListActivity);
209
+ }
210
+
211
+ MemoAdapter(OrderedRealmCollection<Memo> memoDataset) {
212
+ super(memoDataset, true);
213
+ this.mDataset = memoDataset;
214
+ setHasStableIds(true);
215
+ }
216
+
217
+ @Override
218
+ public MemoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
219
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem_memolist, parent, false);
220
+ return new MemoViewHolder(view);
221
+ }
222
+
223
+ @Override
224
+ public void onBindViewHolder(final MemoViewHolder holder, final int position){
225
+ final Memo obj = getItem(position);
226
+ holder.memo.setText(obj.getMemo());
227
+ holder.id.setText(obj.getId());
228
+
229
+ // アイテムクリックされたら編集画面へ
230
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
231
+ @Override
232
+ public void onClick(View v) {
233
+ final String id = obj.getId();
234
+ Log.d(TAG, "id onClick itemView = " + id);
235
+ Log.d(TAG, "onClick itemView = " + memoListActivity);
236
+ memoListActivity.replaceToEditMemoFragment(id);
237
+ }
238
+ });
239
+ }
240
+
241
+ @Override
242
+ public int getItemCount() {
243
+ return mDataset.size();
244
+ }
245
+
246
+ static class MemoViewHolder extends RecyclerView.ViewHolder {
247
+ TextView memo;
248
+ TextView id;
249
+
250
+ MemoViewHolder(View view) {
251
+ super(view);
252
+ memo = view.findViewById(R.id.memoContent);
253
+ id = view.findViewById(R.id.memoId);
254
+ }
255
+ }
256
+ }
195
257
  ```

1

関連コード追記

2019/12/21 05:22

投稿

kashikoma
kashikoma

スコア8

title CHANGED
File without changes
body CHANGED
@@ -82,4 +82,114 @@
82
82
  }
83
83
  }
84
84
 
85
+ ```
86
+ 関連コード
87
+ ---
88
+ ・メインアクティビティ
89
+ ``````ここに言語を入力
90
+ public class MemoListActivity extends AppCompatActivity {
91
+
92
+ @Override
93
+ protected void onCreate(Bundle savedInstanceState) {
94
+ super.onCreate(savedInstanceState);
95
+ setContentView(R.layout.activity_memolist);
96
+
97
+ if (findViewById(R.id.container) != null) {
98
+ if (savedInstanceState != null) {return;}
99
+
100
+ TaskListFragment firstFragment = new TaskListFragment();
101
+ firstFragment.setArguments(getIntent().getExtras());
102
+ getSupportFragmentManager().beginTransaction().add(R.id.container, firstFragment).commit();
103
+ }
104
+
105
+ //ボトムナビゲーション
106
+ BottomNavigationView bottomNavigationView = (BottomNavigationView)
107
+ findViewById(R.id.bottom_navigation);
108
+
109
+ bottomNavigationView.setOnNavigationItemSelectedListener(
110
+ new BottomNavigationView.OnNavigationItemSelectedListener() {
111
+ @Override
112
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
113
+ switch (item.getItemId()) {
114
+ case R.id.action_memo: {
115
+ MemoListFragment fragment = MemoListFragment.newInstance();
116
+ getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
117
+ return true;
118
+ }
119
+ case R.id.action_task: {
120
+ ...
121
+ }
122
+ }
123
+ return false;
124
+ }
125
+ });
126
+
127
+ //Realm初期化・アプリ起動時のActivityに記述
128
+ Realm.init(this);
129
+ RealmConfiguration config = new RealmConfiguration.Builder().build();
130
+ Realm.setDefaultConfiguration(config);
131
+ }
132
+ }
133
+ ```
134
+ ・containerに表示されるフラグメント(onCreateView内でアダプタがnewされている)
135
+ ```ここに言語を入力
136
+ public class MemoListFragment extends Fragment {
137
+ private FloatingActionButton fab;
138
+ private MemoListActivity memoListActivity;
139
+ private RecyclerView recyclerView;
140
+ private Realm realm;
141
+ private MemoAdapter adapter;
142
+
143
+ public static MemoListFragment newInstance(){
144
+ MemoListFragment f = new MemoListFragment();
145
+ Bundle args = new Bundle();
146
+ f.setArguments(args);
147
+ return f;
148
+ }
149
+
150
+ @Override
151
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
152
+ Bundle savedInstanceState) {
153
+ View view = inflater.inflate(R.layout.fragment_memo_list, container, false);
154
+ fab = view.findViewById(R.id.intentEditMemo);
155
+
156
+ realm = Realm.getDefaultInstance(); // Realmをインスタンス化
157
+ final RealmResults<Memo> result = realm.where(Memo.class).findAll() // テーブルから全レコード取得
158
+ .sort("id", Sort.DESCENDING);// 降順にソート
159
+ adapter = new MemoAdapter(result); // その結果をアダプターに渡す
160
+
161
+ recyclerView = view.findViewById(R.id.memoList);
162
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
163
+ recyclerView.setAdapter(adapter);
164
+ recyclerView.setHasFixedSize(true);
165
+ recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
166
+
167
+ return view;
168
+ }
169
+
170
+ @Override
171
+ public void onStart() {
172
+ super.onStart();
173
+
174
+ //新規作成ボタン
175
+ fab.setOnClickListener(new View.OnClickListener() {
176
+ @Override
177
+ public void onClick(View view) {
178
+ Bundle bundle = new Bundle();
179
+ bundle.putString("id", "");
180
+ EditMemoFragment fragment = new EditMemoFragment();
181
+ fragment.setArguments(bundle);
182
+ FragmentTransaction transaction = getFragmentManager().beginTransaction();
183
+ transaction.replace(R.id.container, fragment.newInstance(),"EditMemoFragment").commit();
184
+ }
185
+ });
186
+ }
187
+
188
+ @Override
189
+ public void onDestroy() {
190
+ super.onDestroy();
191
+ recyclerView.setAdapter(null);
192
+ realm.close();
193
+ }
194
+ }
85
195
  ```