Adapterに設定したクリックリスナの中にonClickがあるのですが,いま書いてあるようなIntentの遷移はAdapterだと継承関係で使えないのでどう遷移すればいいのでしょうか?DailyDataにadapterのリスナが動いた時に動くonClickメソッドを作ることができればできそうなのですが、調べてもわからなかったのでよろしければご助言お願いいたします。
Java
1DailyAdapter 2 3@Override 4 public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 5 View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell, parent, false); 6 final ViewHolder holder = new ViewHolder(inflate, viewType); 7 8 // クリックリスナを搭載 9 inflate.setOnClickListener(new View.OnClickListener() { 10 @Override 11 public void onClick(View v) { 12 final int position = holder.getAdapterPosition(); // positionを取得 13 TextView hideDate = v.findViewById(R.id.hideDate); 14 String date = hideDate.getText().toString(); 15 Intent intent = new Intent(getApplication(), DailyData.class); 16 intent.putExtra("CalendarID", date); 17 startActivity(intent); 18 } 19 }); 20 return holder; 21 }
Java
1DailyData 2 3public class DailyData extends AppCompatActivity { 4 5 private KakeiboDatabase kDB; 6 private RecyclerView mRecyclerView; 7 private RecyclerView.Adapter mAdapter; 8 String date; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_daily_data); 14 findViewById(R.id.hideDate).setVisibility(View.INVISIBLE); 15 16 kDB = new KakeiboDatabase(getApplicationContext()); 17 18 mRecyclerView = (RecyclerView)findViewById(R.id.recyclerView); 19 DailyAdapter dailyAdapter = new DailyAdapter(this.createDataset()); 20 21 LinearLayoutManager llm = new LinearLayoutManager(this); 22 23 mRecyclerView.setHasFixedSize(true); 24 mRecyclerView.setLayoutManager(llm); 25 mRecyclerView.setAdapter(dailyAdapter); 26 27 DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), 28 new LinearLayoutManager(getApplication()).getOrientation()); 29 mRecyclerView.addItemDecoration(dividerItemDecoration); 30 } 31 32 private ArrayList<Daily> createDataset() { 33 34 Intent intent = getIntent(); 35 date = intent.getStringExtra("CalendarID"); 36 37 ArrayList<Daily> dataset = new ArrayList<>(); 38 39 SQLiteDatabase db = kDB.getReadableDatabase(); 40 41 Cursor cursor = db.query( 42 "kakeibodb", 43 new String[] {"category", "memo", "price"}, 44 "date=?", 45 new String[] {date}, 46 null, 47 null, 48 null); 49 boolean next = cursor.moveToFirst(); 50 51 if(next) { 52 Daily title = new Daily(); 53 title.setCategory("カテゴリ"); 54 title.setMemo("メモ"); 55 title.setPrice("金額"); 56 dataset.add(title); 57 } 58 59 60 while (next) { 61 Daily daily = new Daily(); 62 // 取得したカラムの順番(0から始まる)と型を指定してデータを取得する 63 daily.setCategory(cursor.getString(0));// categoryを取得 64 daily.setMemo(cursor.getString(1));// memoを取得 65 daily.setPrice(String.valueOf(cursor.getInt(2)));// priceを取得 66 67 // 次の行が存在するか確認 68 next = cursor.moveToNext(); 69 dataset.add(daily); 70 } 71 cursor.close(); 72 73 return dataset; 74 } 75}
回答1件
あなたの回答
tips
プレビュー