Android适配器getView null

Android适配器getView null,android,Android,开始运行时,前5行和后3行没有错误。但随后它给出了空指针异常。我无法解释为什么会发生这种事 代码段: public View getView(int position, View convertView, ViewGroup viewGroup) { PaylasilanHolder holder; final int pozisyon = position; Object currentpaylasilan = getItem(position); Paylas

开始运行时,前5行和后3行没有错误。但随后它给出了空指针异常。我无法解释为什么会发生这种事

代码段:

public View getView(int position, View convertView, ViewGroup viewGroup) {
    PaylasilanHolder holder;
    final int pozisyon = position;
    Object currentpaylasilan = getItem(position);
    Paylasilanlar paylasilan = (Paylasilanlar) currentpaylasilan;
    if (convertView == null) {
        Log.i("tago", "convertview null");
        holder = new PaylasilanHolder();
        if (paylasilan.cesit.equals("text")) {

            convertView = lala.inflate(R.layout.paylasilanyazi,null);
            holder.tv1 = (TextView) convertView.findViewById(R.id.textView11);
            holder.tv2 = (TextView) convertView.findViewById(R.id.textView12);
            holder.tv3 = (TextView) convertView.findViewById(R.id.textView13);
            holder.image1 = (ImageButton) convertView.findViewById(R.id.imageButton11);
            Log.i("tago", "texttexttext");
        } else if (paylasilan.cesit.equals("teklifoto")) {

            convertView = lala.inflate(R.layout.paylasilanresim,null);
            holder.tv1 = (TextView) convertView.findViewById(R.id.textView11);
            holder.tv2 = (TextView) convertView.findViewById(R.id.textView12);
            holder.tv3 = (TextView) convertView.findViewById(R.id.textView13);
            holder.image1 = (ImageButton) convertView.findViewById(R.id.imageButton11);
            Log.i("tago", "tekliteklitekli");
        } else if (paylasilan.cesit.equals("ikilifoto")) {
            Log.i("tago", "ikiliikiliikili");
        } else if (paylasilan.cesit.equals("anket")) {

            convertView = lala.inflate(R.layout.paylasilananket, null);
            holder.etv1 = (EditText) convertView.findViewById(R.id.editText5);
            holder.etv2 = (EditText) convertView.findViewById(R.id.editText6);
            holder.etv3 = (EditText) convertView.findViewById(R.id.editText7);
            holder.etv4 = (EditText) convertView.findViewById(R.id.editText8);
            Log.i("tago", "anketanketanket");
        }

        convertView.setTag(holder);

    } else {
        holder = (PaylasilanHolder) convertView.getTag();
    }

    if (paylasilan.cesit.equals("text")) {
        holder.tv1.setText(paylasilanlarListesi.get(position).getGonderenid());
        holder.tv2.setText(paylasilanlarListesi.get(position).getYaziveyaurl());
    } else if (paylasilan.cesit.equals("teklifoto")) {
        holder.tv3.setText(paylasilanlarListesi.get(position).getGonderenid());
        new urldenResim(holder.image1).execute(paylasilanlarListesi.get(position).getYaziveyaurl());
    } else if (paylasilan.cesit.equals("ikilifoto")) {

    } else if (paylasilan.cesit.equals("anket")) {
        holder.etv1.setText(paylasilanlarListesi.get(position).getQuestion());
        holder.etv2.setText(paylasilanlarListesi.get(position).getOption1());
        holder.etv3.setText(paylasilanlarListesi.get(position).getOption2());
        holder.etv4.setText(paylasilanlarListesi.get(position).getOption3());
    }
    return convertView;
}
它给出:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference    

 com.example.bahadir.myapplicationn.PaylasilanlarAdapter.getView(PaylasilanlarAdapter.java:128)
在holder.tv3.settext()方法中


我怎样才能克服它

由于您只使用了一种视图持有者,我认为您也在适配器中处理一种视图。因此,您正在创建一种类型的视图,并将其与另一种类型重用


您必须重写并返回正确的值,才能使模型正常工作。

因为您只使用了一种视图保持器,我认为您也在适配器中处理一种视图。因此,您正在创建一种类型的视图,并将其与另一种类型重用


您必须覆盖并返回正确的值才能使模型正常工作。

您不能这样混合不同的视图。因为,例如,如果您有前10项
paylislan.cesit.equals(“anj=ket”)
,然后还有一些其他项,适配器视图将已经用
R.layout.paylaslaninket
初始化,并且确保
holder.tv3.setText
将给您
NullPointerException


您应该将所有布局混合到一个布局中,并根据非常糟糕的项目显示/隐藏零件,或者使用本教程中的视图类型:

您不能这样混合不同的视图。因为,例如,如果您有前10项
paylislan.cesit.equals(“anj=ket”)
,然后还有一些其他项,适配器视图将已经用
R.layout.paylaslaninket
初始化,并且确保
holder.tv3.setText
将给您
NullPointerException


您应该将所有布局混合到一个布局中,并根据非常糟糕的项目显示/隐藏零件,或者使用本教程中的视图类型:

您不能像现在这样做。当您试图重用不同类型的单元格,并且试图获取对不存在的文本字段的引用时,就会出现崩溃

您必须在“PaylisLanHolder”中添加另一个字段,并在为新单元格充气时将其设置为单元格类型


当您重复使用单元格时,即:当“convertView!=null”时,您还必须通过引用您在“PaylisLanHolder”中定义的新字段来检查单元格类型是否相同。否则,再次给电池充气。

您不能像现在这样做。当您试图重用不同类型的单元格,并且试图获取对不存在的文本字段的引用时,就会出现崩溃

您必须在“PaylisLanHolder”中添加另一个字段,并在为新单元格充气时将其设置为单元格类型


当您重复使用单元格时,即:当“convertView!=null”时,您还必须通过引用您在“PaylisLanHolder”中定义的新字段来检查单元格类型是否相同。否则,请再次膨胀单元格。

如果要将int设置为字符串对象,请尝试holder.tv3.setText(“+paylasilanlarlistsi.get(position.getgondereind());Gonderenid是字符串Mahesh:)你能发布paylasilanresim和paylasilanyazi布局吗你想将int设置为字符串对象只需尝试holder.tv3.setText(“+PaylasilanLarListsi.get(position.getGonderenid()”);Gondereind是字符串Mahesh:)你能发布paylasilanresim和paylasilanyazi布局吗第一行“文本”来,然后三行“teklifoto”来,然后三行“文本”来,然后崩溃!?我的意思是很容易崩溃。ConvertView是一种缓存,当前项可能与创建ConvertView时的项不同。首先是“文本”行,然后是三个“teklifoto”行,然后是三个“文本”行,然后崩溃!?我的意思是很容易崩溃。ConvertView是一种缓存,当前项可能与创建ConvertView时的项不同。我在类中重写了这些方法(很抱歉没有提到)。事实上,到第九排,人们会形成不同的观点。@CaveMan对我来说,这听起来仍然像是回收的问题。也许可以在你的问题中添加此代码。我在类中重写了这些方法(很抱歉没有提到)。事实上,到第九排,人们会形成不同的观点。@CaveMan对我来说,这听起来仍然像是回收的问题。也许可以将此代码添加到您的问题中。