私はAndroidを初めて使用し、簡単なノートアプリケーションを構築して使い始めます。私はthisライブラリを使用してrecyclerlerviewを実装することができました。SQLiteの値onClick recyclerviewを使用して別のアクティビティの詳細を表示する方法
recyclerviewは、タイトルと簡単な説明を表示するノートのリストです。ユーザーがリスト内の行をクリックすると、別のアクティビティが開き、メモの内容が表示されます。
これを行うには、id(SQLite DBのプライマリキー)を取得し、intent.putExtra
を使用して詳細アクティビティに渡す必要があります。
このメソッドは、recyclerviewのクリックイベントを処理するアクティビティのonCreate
にあります。
onTouchListener = new RecyclerTouchListener(this, mRecyclerView);
onTouchListener
.setClickable(new RecyclerTouchListener.OnRowClickListener() {
@Override
public void onRowClicked(int position) {
// ToastUtil.makeToast(getApplicationContext(), "Row Position " + (position + 1) + " clicked!");
Intent intent = new Intent(getApplicationContext(), NotesDetailActivity.class);
startActivity(intent);
}
この方法では、リスト内の行の位置のみを取得できます。私は、私はノートの内容を表示することができます別の活動に渡すことができるように私はIDを取得する必要があります。現在、ユーザーがリスト内の行をクリックすると、Toastにその位置が表示されます。
ViewHolder
@Override
public MainViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.notes_recycler, parent, false);
return new MainViewHolder(view);
}
@Override
public void onBindViewHolder(MainViewHolder holder, int position) {
holder.bindData(modelList.get(position));
}
@Override
public int getItemCount() {
return modelList.size();
}
class MainViewHolder extends RecyclerView.ViewHolder {
TextView mainText, subText;
public MainViewHolder(View itemView) {
super(itemView);
mainText = (TextView) itemView.findViewById(R.id.mainText);
subText = (TextView) itemView.findViewById(R.id.subText);
}
public void bindData(RowModel rowModel) {
mainText.setText(rowModel.getMainText());
subText.setText(rowModel.getSubText());
}
}
}
のgetData()リアクションテーブルからデータを取得します。
private List<RowModel> getData() {
List<RowModel> list = new ArrayList<>();
Cursor cursor = db.getAllNotes();
if (cursor.getCount() > 0) {
cursor.moveToFirst();
do {
list.add(new RowModel(cursor.getString(1), cursor.getString(2), cursor.getInt(0)));
// return list;
} while (cursor.moveToNext());
} else {
Context context = getApplicationContext();
String text = "No Data";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
return list;
}
さらに詳しい情報が必要な場合はお知らせください。誰かがこの問題を解決するのを手助けできるなら、大きな助けになるでしょう。
ありがとうございます。私はちょうどonRowClicked方法でクリックした行のIDにアクセスしたいの詳細アクティビティコールの
。今私はその位置を取得し、トーストとしてそれを示すことができます。 IDのID(SQLiteのプライマリキー)を取得して、IDを使用してSQLiteから詳細を取得する別のアクティビティに送信すると便利です。 – Aksh
あなたのonClick()で次のようにしてください: onRowClicked(int position){ String rowId = rowModelList.getID(position); // start here intent –
nullpointerのエラーを返す – Aksh