在java中从自定义适配器打开另一个活动时出现问题
我需要从自定义适配器打开另一个活动,就像一个列表一样,然后当我单击该列表时,它将转到另一个活动,从数据库中获取数据并在文本视图中显示, 问题在于context.startActivity(intent)中的SearchAdapter.java 这是我的searchAdapter.java在java中从自定义适配器打开另一个活动时出现问题,java,android,android-recyclerview,android-adapter,Java,Android,Android Recyclerview,Android Adapter,我需要从自定义适配器打开另一个活动,就像一个列表一样,然后当我单击该列表时,它将转到另一个活动,从数据库中获取数据并在文本视图中显示, 问题在于context.startActivity(intent)中的SearchAdapter.java 这是我的searchAdapter.java package Adapter; import android.content.Context; import android.content.DialogInterface; import android
package Adapter;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
//import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.manualdiagnosiskeperawatan.R;
import com.example.manualdiagnosiskeperawatan.isiDiagnosis;
import java.util.List;
import Model.Daftar;
class SearchViewHolder extends RecyclerView.ViewHolder{
public TextView judul, diagnosis;
public SearchViewHolder(View itemView) {
super(itemView);
judul = itemView.findViewById(R.id.judul);
diagnosis = itemView.findViewById(R.id.textViewIsi);
}
}
public class SearchAdapter extends RecyclerView.Adapter<SearchViewHolder>
{
private Context context;
private List<Daftar> data;
public SearchAdapter(Context context, List<Daftar> data) {
this.context = context;
this.data = data;
}
@Override
public SearchViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.layout_item,parent,false);
return new SearchViewHolder(itemView);
}
@Override
public void onBindViewHolder(final SearchViewHolder holder, final int position)
{
holder.judul.setText(data.get(position).getJudul());
//open activity
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, data.get(position).getDiagnosis(),Toast.LENGTH_SHORT).show();
//this code, isn't working
Intent intent = new Intent(context, isiDiagnosis.class);
intent.putExtra("did",data.get(position).getDid());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return data.size();
}
}
封装适配器;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.TextView;
导入android.widget.Toast;
//导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
导入com.example.manualdiagnosiskeperawatan.R;
导入com.example.manualdiagnosiskeperawatan.isiDiagnosis;
导入java.util.List;
进口模型.Daftar;
类SearchViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图judul,诊断;
公共SearchViewHolder(查看项目视图){
超级(项目视图);
judul=itemView.findviewbyd(R.id.judul);
诊断=itemView.findViewById(R.id.textViewIsi);
}
}
公共类SearchAdapter扩展了RecyclerView.Adapter
{
私人语境;
私人名单数据;
公共SearchAdapter(上下文、列表数据){
this.context=上下文;
这个数据=数据;
}
@凌驾
public SearchViewHolder onCreateViewHolder(视图组父级,int-viewType){
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
视图项视图=充气机。充气(R.layout.layout\u项,父项,false);
返回新的SearchViewHolder(itemView);
}
@凌驾
公共无效onBindViewHolder(最终SearchViewHolder,最终int位置)
{
holder.judul.setText(data.get(position.getJudul());
//公开活动
holder.itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Toast.makeText(context,data.get(position).getDiagnosis(),Toast.LENGTH_SHORT).show();
//此代码不起作用
意向意向=新意向(上下文,isiDiagnosis.class);
intent.putExtra(“did”,data.get(position.getDid());
背景。开始触觉(意图);
}
});
}
@凌驾
public int getItemCount(){
返回data.size();
}
}
这是我的isiDiagnosis.java,当我从SearchAdapter.java中单击列表时,它将被打开
package com.example.manualdiagnosiskeperawatan;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.TextView;
import com.mancj.materialsearchbar.MaterialSearchBar;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
import Adapter.SearchAdapter;
import Database.Database;
import Model.Daftar;
public class isiDiagnosis extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
SearchAdapter adapter;
Database database;
List<Daftar> daftars = new ArrayList<>();
private TextView judul, diagnosis;
private String DID = "judul";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_isi_diagnosis);
DID = getIntent().getStringExtra("judul");
database = new Database(this);
diagnosis = (TextView) findViewById(R.id.textViewIsi);
//init DB
loadData(DID);
}
private void loadData(String did) {
//i don't really know how to code, just see from the youtube, so i made this myself
// database.getDiagnosis();
// String diagnosis = daftars.get(database.getDiagnosis());
// database.getDiagnosis(diagnosis.setText());
}
}
包com.example.manualdiagnosiskeperawatan;
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.recyclerview;
导入android.content.Intent;
导入android.database.sqlite.SQLiteDatabase;
导入android.os.Bundle;
导入android.provider.contacts合同;
导入android.widget.TextView;
导入com.mancj.materialsearch.materialsearch;
导入org.w3c.dom.Text;
导入java.util.ArrayList;
导入java.util.List;
导入适配器.SearchAdapter;
导入数据库;
进口模型.Daftar;
公共类ISI诊断扩展了应用程序活动{
回收视图回收视图;
RecyclerView.LayoutManager LayoutManager;
搜索适配器;
数据库;
List daftars=new ArrayList();
私人文本视图judul,诊断;
私有字符串DID=“judul”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u isi\u diagnosis);
DID=getIntent().getStringExtra(“judul”);
数据库=新数据库(此数据库);
诊断=(TextView)findViewById(R.id.textViewIsi);
//初始化数据库
负荷数据(DID);
}
私有void加载数据(字符串did){
//我真的不知道如何编码,只是从youtube上看到,所以我自己做了这个
//getDiagnosis()数据库;
//字符串诊断=daftars.get(database.getDiagnosis());
//database.getDiagnosis(diagnosis.setText());
}
}
这是我的searchDiagnosis.java
package com.example.manualdiagnosiskeperawatan;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.widget.ListViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.Adapter;
import android.widget.ListView;
import com.mancj.materialsearchbar.MaterialSearchBar;
import java.util.ArrayList;
import java.util.List;
import Adapter.SearchAdapter;
import Database.Database;
public class searchDiagnosis extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
SearchAdapter adapter;
Database database;
MaterialSearchBar materialSearchBar;
List<String> suggestList = new ArrayList<>();
@Override
protected void onStart() {
super.onStart();
adapter = new SearchAdapter(getBaseContext(),database.getDaftar());
recyclerView.setAdapter(adapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_diagnosis);
//init view
recyclerView = (RecyclerView) findViewById(R.id.recycler_search);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
materialSearchBar =(MaterialSearchBar) findViewById(R.id.search_bar);
//init DB
database = new Database(this);
//Setup search bar
materialSearchBar.setHint("Search");
materialSearchBar.setCardViewElevation(10);
loadSuggestList();
materialSearchBar.addTextChangeListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
List<String> suggest = new ArrayList<>();
for(String search:suggestList){
if(search.toLowerCase().contains(materialSearchBar.getText().toLowerCase()))
suggest.add(search);
}
materialSearchBar.setLastSuggestions(suggest);
}
@Override
public void afterTextChanged(Editable s) {
}
});
materialSearchBar.setOnSearchActionListener(new MaterialSearchBar.OnSearchActionListener() {
@Override
public void onSearchStateChanged(boolean enabled) {
if(!enabled) {
// recyclerView.setAdapter(adapter);
//if close Search, just restore default
adapter = new SearchAdapter(getBaseContext(),database.getDaftar());
recyclerView.setAdapter(adapter);
}
}
@Override
public void onSearchConfirmed(CharSequence text) {
startSearch(text.toString());
}
@Override
public void onButtonClicked(int buttonCode) {
}
});
//Init adapter default set all result
adapter = new SearchAdapter(this,database.getDaftar());
}
private void startSearch(String text) {
adapter = new SearchAdapter(this,database.getDataByJudul(text));
recyclerView.setAdapter(adapter);
}
private void loadSuggestList() {
suggestList = database.getJudul();
materialSearchBar.setLastSuggestions(suggestList);
}
}
包com.example.manualdiagnosiskeperawatan;
导入androidx.appcompat.app.appcompat活动;
导入androidx.core.widget.ListViewCompat;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.os.Bundle;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.widget.Adapter;
导入android.widget.ListView;
导入com.mancj.materialsearch.materialsearch;
导入java.util.ArrayList;
导入java.util.List;
导入适配器.SearchAdapter;
导入数据库;
公共类searchDiagnosis扩展了AppCompative活动{
回收视图回收视图;
RecyclerView.LayoutManager LayoutManager;
搜索适配器;
数据库;
材料搜索栏材料搜索栏;
List suggestList=新建ArrayList();
@凌驾
受保护的void onStart(){
super.onStart();
adapter=newsearchadapter(getBaseContext(),database.getDaftar());
recyclerView.setAdapter(适配器);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u search\u Diagnostics);
//初始视图
recyclerView=(recyclerView)findViewById(R.id.recycler\u搜索);
layoutManager=新的LinearLayoutManager(此);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
materialSearchBar=(materialSearchBar)findViewById(R.id.search\u bar);
//初始化数据库
数据库=新数据库(此数据库);
//设置搜索栏
materialSearchBar.setHint(“搜索”);
材料搜索栏。设置卡片视图立面图(10);
loadSuggestList();
materialSearchBar.addTextChangeListener(新的TextWatcher(){
@凌驾
P
package Model;
public class Daftar {
public int id;
public String did, judul, diagnosis;
public Daftar(int id,String did, String judul, String diagnosis) {
this.id = id;
this.did = did;
this.judul = judul;
this.diagnosis = diagnosis;
}
public Daftar() {
}
public int getId() {
return id;
}
public String getDid() {
return did;
}
public void setDid(String did) {
this.did = did;
}
public void setId(int id) {
this.id = id;
}
public String getJudul() {
return judul;
}
public void setJudul(String judul) {
this.judul = judul;
}
public String getDiagnosis() {
return diagnosis;
}
public void setDiagnosis(String diagnosis) {
this.diagnosis = diagnosis;
}
}
............
//get the did like this
DID = getIntent().getStringExtra("did");
.......
loadData(DID);
//loading the data is up to you according to the database
private void loadData(String did) {.........}