Android适配器getView null
开始运行时,前5行和后3行没有错误。但随后它给出了空指针异常。我无法解释为什么会发生这种事 代码段: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
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对我来说,这听起来仍然像是回收的问题。也许可以将此代码添加到您的问题中。