Reputation: 387
Here is my MainActivity.java
which contains a 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);
}
}
Here is my CustAdapter
Adapter Class
It's working, but when I scroll up to the last item, it shows a Null Pointer Error.
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;
}
}
Upvotes: 1
Views: 61
Reputation: 52800
getView() of BaseAdapter should looks like this:
@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;
}
ViewHolder class in BaseAdapter.
private class ViewHolder {
private TextView txtTitle, txtDateTime;
}
Hope it will help you.
Upvotes: 1
Reputation: 190
Your maintext[] and text[] elements not match, maintext object have 15 values where as text object have 20 values remove 5 values from text object and try..
Upvotes: 0