I am trying to display a list of elements in listview
I have also used holder design pattern for efficiency of listview
MainActivity.java
public class MainActivity extends Activity {
ListView LV;
String[] TITLE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Bring the data from the resources to Java
Resources res=getResources();//To Bring it use the resources references
TITLE=res.getStringArray(R.array.title);
LV=(ListView) findViewById(R.id.listView_id);
AdapterClass myAdapter=new AdapterClass(this,TITLE);//declare the custom adapter
LV.setAdapter(myAdapter);//set the adapter
}
}
AdapterClass.java
public class AdapterClass extends ArrayAdapter<String>{
Context cxt; String[] titleArray;
public AdapterClass(Context c, String[] tITLE) {
// TODO Auto-generated constructor stub
super(c, R.layout.single_item, R.id.title_textView_id, tITLE);
this.titleArray=tITLE;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row=convertView;
MyViewHolder holder=null;
if(row==null)
{
LayoutInflater inflater=(LayoutInflater) cxt.getSystemService(cxt.LAYOUT_INFLATER_SERVICE);
row=inflater.inflate(R.layout.single_item, parent, false);
holder=new MyViewHolder(row);
row.setTag(holder);
}
else
{
holder=(MyViewHolder) row.getTag();
}
holder.myTitle.setText(titleArray[position]);
return row;
}
}
MyViewHolder.java
public class MyViewHolder {
TextView myTitle;
MyViewHolder(View row)
{
myTitle=(TextView) row.findViewById(R.id.title_textView_id);
}
}
log::
12-31 11:03:17.070: E/AndroidRuntime(313): FATAL EXCEPTION: main
12-31 11:03:17.070: E/AndroidRuntime(313): java.lang.NullPointerException
12-31 11:03:17.070: E/AndroidRuntime(313): at com.example.listviewpractice.AdapterClass.getView(AdapterClass.java:29)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.AbsListView.obtainView(AbsListView.java:1315)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.ListView.onMeasure(ListView.java:1109)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.View.measure(View.java:8171)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:563)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:378)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.View.measure(View.java:8171)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.View.measure(View.java:8171)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.View.measure(View.java:8171)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.View.measure(View.java:8171)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.os.Handler.dispatchMessage(Handler.java:99)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.os.Looper.loop(Looper.java:123)
12-31 11:03:17.070: E/AndroidRuntime(313): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-31 11:03:17.070: E/AndroidRuntime(313): at java.lang.reflect.Method.invokeNative(Native Method)
12-31 11:03:17.070: E/AndroidRuntime(313): at java.lang.reflect.Method.invoke(Method.java:521)
12-31 11:03:17.070: E/AndroidRuntime(313): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-31 11:03:17.070: E/AndroidRuntime(313): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-31 11:03:17.070: E/AndroidRuntime(313): at dalvik.system.NativeStart.main(Native Method)
{Edit} - Wrt- Raghunandan answer
AdapterClass.java
public class AdapterClass extends ArrayAdapter<String>{
Context cxt; String[] titleArray;
LayoutInflater mInflater;
public AdapterClass(Context c, String[] tITLE) {
// TODO Auto-generated constructor stub
super(c, R.layout.single_item, R.id.title_textView_id, tITLE);
this.titleArray=tITLE;
this.cxt=c;
mInflater = LayoutInflater.from(c);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row=convertView;
MyViewHolder holder=null;
if(row==null)
{
row=mInflater.inflate(R.layout.single_item, parent, false);
holder.myTitle =(TextView) row.findViewById(R.id.title_textView_id);
//holder=new MyViewHolder(row);
row.setTag(holder);
}
else
{
holder=(MyViewHolder) row.getTag();
}
holder.myTitle.setText(titleArray[position]);
return row;
}
}
MyViewHolder.java
public class MyViewHolder {
TextView myTitle;
}
Log::
12-31 11:33:07.360: E/AndroidRuntime(504): FATAL EXCEPTION: main
12-31 11:33:07.360: E/AndroidRuntime(504): java.lang.NullPointerException
12-31 11:33:07.360: E/AndroidRuntime(504): at com.example.listviewpractice.AdapterClass.getView(AdapterClass.java:39)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.AbsListView.obtainView(AbsListView.java:1315)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.ListView.onMeasure(ListView.java:1109)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.View.measure(View.java:8171)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:563)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:378)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.View.measure(View.java:8171)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.View.measure(View.java:8171)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.View.measure(View.java:8171)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.View.measure(View.java:8171)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.os.Handler.dispatchMessage(Handler.java:99)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.os.Looper.loop(Looper.java:123)
12-31 11:33:07.360: E/AndroidRuntime(504): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-31 11:33:07.360: E/AndroidRuntime(504): at java.lang.reflect.Method.invokeNative(Native Method)
12-31 11:33:07.360: E/AndroidRuntime(504): at java.lang.reflect.Method.invoke(Method.java:521)
12-31 11:33:07.360: E/AndroidRuntime(504): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-31 11:33:07.360: E/AndroidRuntime(504): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-31 11:33:07.360: E/AndroidRuntime(504): at dalvik.system.NativeStart.main(Native Method)