What im doing is I'm inserting card using CardScrollView in google glass using an EMBEDDED LAYOUT because the table layout is not yet available in card builder. Let's assume that every table has 1 textView. What's happening is when I insert 1-3 layout, there's is no any error but when i inserted the 4th layout it gives me a java.lang.NullPointerException in this line.
tv4.setText('Value for table 4');
This is my code:
NOTE: I have atleast 5 TextView in each table. make it simple here.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createCards();
mCardScrollView = new CardScrollView(this);
mAdapter = new ExampleCardScrollAdapter();
mCardScrollView.setAdapter(mAdapter);
mCardScrollView.activate();
setContentView(mCardScrollView);
TextView tv1 = (TextView) findViewById(R.id.textView1);
TextView tv2 = (TextView) findViewById(R.id.textView2);
TextView tv3 = (TextView) findViewById(R.id.textView3);
TextView tv4 = (TextView) findViewById(R.id.textView4);
tv1.setText('Value for table 1');
tv2.setText('Value for table 2');
tv3.setText('Value for table 3');
tv4.setText('Value for table 4');
}
private void createCards(){
mCards = new ArrayList<CardBuilder>();
mCards.add(new CardBuilder(this, CardBuilder.Layout.EMBED_INSIDE)
.setEmbeddedLayout(R.layout.activity_layout1)
.setFootnote("TABLE 1"));
mCards.add(new CardBuilder(this, CardBuilder.Layout.EMBED_INSIDE)
.setEmbeddedLayout(R.layout.activity_layout2)
.setFootnote("TABLE 2"));
mCards.add(new CardBuilder(this, CardBuilder.Layout.EMBED_INSIDE)
.setEmbeddedLayout(R.layout.activity_layout3)
.setFootnote("TABLE 3"));
mCards.add(new CardBuilder(this, CardBuilder.Layout.EMBED_INSIDE)
.setEmbeddedLayout(R.layout.activity_layout4)
.setFootnote("TABLE 4"));
}
private class ExampleCardScrollAdapter extends CardScrollAdapter {
@Override
public int getPosition(Object item) {
return mCards.indexOf(item);
}
@Override
public int getCount() {
return mCards.size();
}
@Override
public Object getItem(int position) {
return mCards.get(position);
}
@Override
public int getViewTypeCount() {
return CardBuilder.getViewTypeCount();
}
@Override
public int getItemViewType(int position){
return mCards.get(position).getItemViewType();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return mCards.get(position).getView(convertView, parent);
}
}
activity_layout1
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TableRow>
<TextView
android:padding="3dip"
android:textSize="20sp"
android:text="@string/textViewTitle1"
android:textColor="@color/muted" />
<TextView
android:id="@+id/textView1"
android:gravity="right"
android:padding="3dip"
android:textSize="20sp" />
</TableRow>
</TableLayout>
activity_layout2
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TableRow>
<TextView
android:padding="3dip"
android:textSize="20sp"
android:text="@string/textViewTitle2"
android:textColor="@color/muted" />
<TextView
android:id="@+id/textView2"
android:gravity="right"
android:padding="3dip"
android:textSize="20sp" />
</TableRow>
</TableLayout>
activity_layout3
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TableRow>
<TextView
android:padding="3dip"
android:textSize="20sp"
android:text="@string/textViewTitle4"
android:textColor="@color/muted" />
<TextView
android:id="@+id/textView3"
android:gravity="right"
android:padding="3dip"
android:textSize="20sp" />
</TableRow>
</TableLayout>
activity_layout4
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TableRow>
<TextView
android:padding="3dip"
android:textSize="20sp"
android:text="@string/textViewTitle4"
android:textColor="@color/muted" />
<TextView
android:id="@+id/textView4"
android:gravity="right"
android:padding="3dip"
android:textSize="20sp" />
</TableRow>
</TableLayout>
Adapter
private class ExampleCardScrollAdapter extends CardScrollAdapter {
@Override
public int getPosition(Object item) {
return mCards.indexOf(item);
}
@Override
public int getCount() {
return mCards.size();
}
@Override
public Object getItem(int position) {
return mCards.get(position);
}
@Override
public int getViewTypeCount() {
return CardBuilder.getViewTypeCount();
}
@Override
public int getItemViewType(int position){
return mCards.get(position).getItemViewType();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return mCards.get(position).getView(convertView, parent);
}
}
Please help because I'm stuck in here for days. Thank you!