【问题标题】:Error when I try to make onclicklistetener当我尝试制作 onclicklistener 时出错
【发布时间】: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() 时,您的holderTextViews 之一为空。这最终表明,至少有一个 ID 为 tv_nama_pengusahatv_nama_usahatv_alamat&lt;TextView&gt;s 不在当前的 card_row 布局中。

标签: java android mysql android-studio onclicklistener


【解决方案1】:

检查在R.layout.card_row 中找到的所有TextView 是否存在并且它们的ID 是否正确:

tv_nama_pengusaha

tv_nama_usaha

tv_alamat

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2019-01-11
    相关资源
    最近更新 更多