我得到一個片段與另一個片段中的列表視圖,和列表視圖有viewholder類是這樣的:
private class ViewHolder{ TextView rowText1; TextView rowText2; }
爲什麼在ListView中的Viewholder不能處理兩個文字瀏覽?
,並給TextView的非常簡單的任務:
holder.rowText1.setText(someString); holder.rowText2.setText(someString);
日誌給我一個空指針錯誤:
java.lang.NullPointerException:
Attempt to invoke virtual method void android.widget.TextView.setText(java.lang.CharSequence) on a null object reference
但是,如果我只給一個視圖settext(任何一個),一切窩rks fine:
holder.rowText1.setText(someString);
//holder.rowText2.setText(someString);
任何想法爲什麼?
我viewholder代碼:
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.some_layout, parent,false);
switch(type){
case 1:
holder.rowText1 = (TextView) convertView.findViewById(R.id.textView1);
break;
case 2:
holder.rowText1 = (TextView) convertView.findViewById(R.id.textView1);
holder.rowText2 =(TextView)convertView.findViewById(R.id.textView2);
ImageView fileImage = (ImageView)convertView.findViewById(R.id.typeImage);
fileImage.setImageDrawable(fileDrawable);
break;
}
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
而且,我挖一點點,發現問題似乎是在視圖再循環級,不知何故,當系統開始回收的觀點,有兩個觀點,它只是沒有工作。
問題是什麼?看起來你在發佈之前沒有完成這個問題。 – laalto
對不起,這是我的第一篇文章,我試圖讓格式正確,現在問題已經完成。 – coldspring
所以你忘記了初始化'rowText2'或者它是初始化null。將代碼發佈到設置視圖持有者的位置。 – laalto