Я пытаюсь получить данные из sqlite. Мои данные Sqlite отображаются в списке, я хочу получить "id" определенного элемента из базы данных SQlite , когда элемент щелкается в списке, и идентификатор будет использоваться для получения полных данных этого элемента и отображения в Подробное задание
MainActivity.java
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, EnquiryAdapter.OnItemClickListener {
DbHelper mDbHelper;
public static final String FORM_ID = "form_id";
private RecyclerView mRecyclerView;
// private ArrayList<enquiry> mEnquiryList;
private EnquiryAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mDbHelper = new DbHelper(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,FormActivity.class);
startActivity(intent);
}
});
//RecyclerView Setup
mRecyclerView = findViewById(R.id.recyclerview);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new EnquiryAdapter(MainActivity.this,mDbHelper.getFormData());
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(MainActivity.this);
@Override
public void onItemClick(int position) {
Intent detailIntent = new Intent(this, DetailedActivity.class);
startActivity(detailIntent);
}
Класс адаптера
открытый класс EnquiryAdapter расширяет RecyclerView.Adapter {
private Context context;
private Cursor cursor;
private OnItemClickListener mListner;
public EnquiryAdapter(Context context, Cursor cursor) {
this.context = context;
this.cursor = cursor;
}
@NonNull
@Override
public EnquiryViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.enquiry_list,viewGroup,false);
return new EnquiryViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull EnquiryViewHolder enquiryViewHolder, int i) {
if(!cursor.moveToPosition(i)){
return;
}
String nameText = cursor.getString(cursor.getColumnIndex(FormContract.FormEnrty.COLUMN_NAME_NAME));
String emailText = cursor.getString(cursor.getColumnIndex(FormContract.FormEnrty.COLUMN_NAME_EMAIL));
int id = cursor.getInt(cursor.getColumnIndex(FormContract.FormEnrty._ID));
Log.d("id", String.valueOf(id));
enquiryViewHolder.mNameText.setText(nameText);
enquiryViewHolder.mEmailText.setText(emailText);
}
@Override
public int getItemCount() {
//return cursor.getCount();
return cursor.getCount();
}
public class EnquiryViewHolder extends RecyclerView.ViewHolder{
public TextView mNameText, mEmailText, mDateText;
public EnquiryViewHolder(@NonNull View itemView) {
super(itemView);
mNameText = itemView.findViewById(R.id.name);
mEmailText = itemView.findViewById(R.id.email);
mDateText = itemView.findViewById(R.id.date_text);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mListner != null){
int position = getAdapterPosition();
if(position != RecyclerView.NO_POSITION){
mListner.onItemClick(position);
}
}
}
});
}
}
public interface OnItemClickListener{
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
mListner = listener;
}