I am trying to populate a listView
with two String ArrayLists. These ArrayLists are passed from another activity to the listView
activity.
Activity with Listview
public class DecisionActivity extends AppCompatActivity {
ListView lv;
customDecisionAdapter decisionAdapter;
String[] array1, array2 ;
ArrayList<String> l1;
ArrayList<String> l2;
TextView t1,t2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_decision);
t1=(TextView) findViewById(R.id.textForl1);
t2=(TextView) findViewById(R.id.textForl2);
lv= (ListView) findViewById(R.id.listViewDecision);
Intent intent = getIntent();
array1=intent.getStringArrayExtra("List1");
array2=intent.getStringArrayExtra("List2");
l1=new ArrayList<>(Arrays.asList(array1));
l2=new ArrayList<>(Arrays.asList(array2));
decisionAdapter=new customDecisionAdapter(getApplicationContext(),l1,l2);
lv.setAdapter(decisionAdapter);
}
}
Custom Adapter
public class customDecisionAdapter extends BaseAdapter {
Context context;
private ArrayList<String> list1;
private ArrayList<String> list2;
public customDecisionAdapter(Context context, ArrayList<String>list1, ArrayList<String>list2) {
this.context= context;
this.list1= list1;
this.list2= list2;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View convertView = view;
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.customdecision,viewGroup,false);
}
TextView t1 = (TextView) convertView.findViewById(R.id.textDisease);
TextView t2 = (TextView) convertView.findViewById(R.id.textTotal);
t1.setText(list1.get(i));
t2.setText(list2.get(i));
return convertView;
}
@Override
public int getCount() {
return list1.size();
}
@Override
public Object getItem(int i) {
if (i>= list1.size())
return list2.get(i);
return list1.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
}
When I run the program, it crashes and provides the error of:
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
which point to the line:
t2.setText(list2.get(i));
I don't know what I'm doing wrong here.