I have a listactivity app , consist of 5 rows , each row contain one TEXT and 5 BUTTON , both text and buttons are clickable , text will open MyDay activity whic is textview and when you click any button it must open videoview screen .
every things run nicely except when turn mobile to landscape mode and scrolling the list it force closed and gave NullPointerException in logcat report in this line (51) of MyArrayAdapter Class .
logcat:
java.lang.NullPointerException
at com.test.demo.MyArrayAdapter.getView(MyArrayAdapter.java:51)
Line (51) in MyArrayAdapter Class is :
holder.textView.setText(s);
any advice will be appreciated to solve that , thanks .
MyArrayAdapter Class:
public class MyArrayAdapter extends ArrayAdapter<String> {
private final String[] mClasses;
private Context mContext;
private Typeface tf;
private LayoutInflater mInflater;
private String[] mData = { "button1", "button2", "button3", "button4",
"button5" };
private int[] ids = { R.id.button1, R.id.button2, R.id.button3,
R.id.button4, R.id.button5 };
int[][] rowDrawables = {
{R.drawable.row_1, R.drawable.row_2, R.drawable.row_3,
R.drawable.row_4, R.drawable.row_5},
{R.drawable.row_6, R.drawable.row_7, R.drawable.row_8,
R.drawable.row_9, R.drawable.row_10},
{R.drawable.row_11, R.drawable.row_12, R.drawable.row_13,
R.drawable.row_14, R.drawable.row_15},
{R.drawable.row_16, R.drawable.row_17, R.drawable.row_18,
R.drawable.row_19, R.drawable.row_20},
{R.drawable.row_21, R.drawable.row_22, R.drawable.row_23,
R.drawable.row_24, R.drawable.row_25}};
public MyArrayAdapter(Context context, String[] classes) {
super(context, 0, classes);
mClasses = classes;
mContext = context;
tf = Typeface.createFromAsset(context.getAssets(), "BFantezy.ttf");
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row, null, true);
holder = new ViewHolder();
holder.textView = (TextView) convertView
.findViewById(R.id.row_label);
holder.textView.setTypeface(tf);
holder.bt1 = (Button) convertView.findViewById(R.id.button1);
holder.bt2 = (Button) convertView.findViewById(R.id.button2);
holder.bt3 = (Button) convertView.findViewById(R.id.button3);
holder.bt4 = (Button) convertView.findViewById(R.id.button4);
holder.bt5 = (Button) convertView.findViewById(R.id.button5);
} else {
holder = (ViewHolder) convertView.getTag();}
String s = mClasses[position];
holder.textView.setText(s);
int[] rowDr = rowDrawables[position];
holder.bt1.setBackgroundResource(rowDr[0]);
holder.bt2.setBackgroundResource(rowDr[1]);
holder.bt3.setBackgroundResource(rowDr[2]);
holder.bt4.setBackgroundResource(rowDr[3]);
holder.bt5.setBackgroundResource(rowDr[4]);
holder.textView.setTag(Integer.valueOf(position));
holder.textView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Integer pos = (Integer) v.getTag();
Intent ourIntent = new Intent(mContext, MyDay.class);
ourIntent.putExtra("cheese", mClasses[pos]);
mContext.startActivity(ourIntent);
}
});
holder.bt1.setTag(Integer.valueOf(position));
holder.bt1.setOnClickListener(mListener);
holder.bt2.setTag(Integer.valueOf(position));
holder.bt2.setOnClickListener(mListener);
holder.bt3.setTag(Integer.valueOf(position));
holder.bt3.setOnClickListener(mListener);
holder.bt4.setTag(Integer.valueOf(position));
holder.bt4.setOnClickListener(mListener);
holder.bt5.setTag(Integer.valueOf(position));
holder.bt5.setOnClickListener(mListener);
return convertView;
}
static class ViewHolder {
TextView textView;
Button bt1, bt2, bt3, bt4, bt5;
}
private OnClickListener mListener = new OnClickListener() {
public void onClick(View v) {
Integer realPos = (Integer) v.getTag();
int video = 0;
String night = null;
for (int i = 0; i < ids.length; i++) {
if (v.getId() == ids[i]) {
video = i;
break;
}
}
Intent i = new Intent(mContext, My_videos.class);
i.putExtra("video", video);
i.putExtra("row", realPos);
mContext.startActivity(i);
}
};
}
ListButtons:
public class ListButtons extends ListActivity {
String classes[] = {"First", "Second", "Third","Fourth", "Fifth" };
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new MyArrayAdapter(this, classes)); }}