【发布时间】:2020-07-31 18:53:36
【问题描述】:
我尝试创建 onclicklistener 函数,但在 onBindViewHolder 上出现错误
我尝试根据id_daftar做了一个可以点击的cardview,我使用的数据库在webserver上
这是我的适配器
import...
import java.util.ArrayList;
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<AndroidVersion> android;
//----------------------------------------------------------------------------------------------
public DataAdapter (ArrayList<AndroidVersion> android){
this.android = android;
}
@NonNull
@Override
public DataAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_row,parent, false);
return new ViewHolder(v);
}
//----------------------------------------------------------------------------------------------
@Override
public void onBindViewHolder(@NonNull DataAdapter.ViewHolder holder,final int position) {
holder.tv_nama_pengusaha.setText(android.get(position).getNama_pengusaha());
holder.tv_nama_usaha.setText(android.get(position).getNama_usaha());
holder.tv_alamat.setText(android.get(position).getAlamat());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(), DetailActivity.class);
i.putExtra("nama_usaha", android.get(position).getNama_usaha());
v.getContext().startActivity(i);
}
});
}
//----------------------------------------------------------------------------------------------
@Override
public int getItemCount() {
return android.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView tv_nama_pengusaha, tv_nama_usaha, tv_alamat, tv_id_daftar, tv_rt,
tv_rw, tv_desa, tv_kecamatan, tv_kategori;
public ViewHolder(@NonNull View itemView) {
super(itemView);
// implement onClick
tv_nama_pengusaha = (TextView)itemView.findViewById(R.id.tv_nama_pengusaha);
tv_nama_usaha = (TextView)itemView.findViewById(R.id.tv_nama_usaha);
tv_alamat = (TextView)itemView.findViewById(R.id.tv_alamat);
}
}
}
这是我的 DetailActivity
import...
public class DetailActivity extends AppCompatActivity {
TextView detailData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
detailData = findViewById(R.id.tv_nama_usaha);
Intent i = getIntent();
String content = i.getStringExtra("nama_usaha");
detailData.setText(content);
detailData.setMovementMethod(new ScrollingMovementMethod());
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
这是我遇到的错误
有人能解释一下错误的含义和解决方案吗?
【问题讨论】:
-
该错误意味着当您调用
setText()时,您的holder的TextViews 之一为空。这最终表明,至少有一个 ID 为tv_nama_pengusaha、tv_nama_usaha或tv_alamat的<TextView>s 不在当前的card_row布局中。
标签: java android mysql android-studio onclicklistener