以下是我的MainActivity.java
,其中包含Listview
。
public class MainActivity extends Activity {
String maintext[] = { "item 1", "item 2", "item 3", "item 4", "item 5",
"item 1", "item 2", "item 3", "item 4", "item 5", "item 1",
"item 2", "item 3", "item 4", "item 5" };
String text[] = { "342", "3542", "3523", "23654", "3545", "342", "3542",
"3523", "23654", "3545", "342", "3542", "3523", "23654", "3545",
"342", "3542", "3523", "23654", "3545" };
ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.listView1);
CustAdapter adp = new CustAdapter(MainActivity.this, maintext, text);
list.setAdapter(adp);
}
}
这是我的CustAdapter
适配器类
它正常工作,但当我向上滚动到最后一项时,它显示出空指针错误。
public class CustAdapter extends BaseAdapter {
Context context;
String maintext[];
String text[];
public CustAdapter(Context context, String maintext[], String text[]) {
// TODO Auto-generated constructor stub
this.context = context;
this.maintext = maintext;
this.text = text;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return maintext.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return maintext[arg0];
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
ImageView imgv;
TextView mainText1;
TextView text1;
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
if (arg1 == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arg1 = inflater.inflate(R.layout.listview, null);
imgv=(ImageView) arg1.findViewById(R.id.imageView1);
mainText1=(TextView) arg1.findViewById(R.id.textView1);
text1=(TextView) arg1.findViewById(R.id.textView2);
imgv.setBackgroundResource(R.drawable.ic_launcher);
mainText1.setText(maintext[arg0]);
text1.setText(text[arg0]);
} else {
arg1 = (View)arg1.getTag();
}
return arg1;
}
}
答案 0 :(得分:1)
getView()应如下所示:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
holder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.row_push_notification, null);
// bind views
holder.txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
holder.txtDateTime = (TextView) convertView.findViewById(R.id.txtDateTime);
// set tag
convertView.setTag(holder);
} else {
// get tag
holder = (ViewHolder) convertView.getTag();
}
holder.txtTitle.setText(your_one_array[position]);
holder.txtDateTime.setText(your_two_array[position]);
return convertView;
}
BaseAdapter 中的ViewHolder 类。
private class ViewHolder {
private TextView txtTitle, txtDateTime;
}
希望它会对你有所帮助。
答案 1 :(得分:0)
你的maintext []和text []元素不匹配,maintext对象有15个值,其中text对象有20个值从text对象中删除5个值并尝试..