Android 用两个ArrayList填充列表视图
我试图用两个字符串数组列表填充Android 用两个ArrayList填充列表视图,android,Android,我试图用两个字符串数组列表填充列表视图。这些ArrayList从另一个活动传递到listView活动 具有Listview的活动 public class DecisionActivity extends AppCompatActivity { ListView lv; customDecisionAdapter decisionAdapter; String[] array1, array2 ; ArrayList<String> l1; ArrayList&l
列表视图。这些ArrayList从另一个活动传递到listView
活动
具有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);
}
}
我不知道我做错了什么。检查array2=intent.getStringArrayExtra(“列表2”)代码>(在决策活动
中)。它返回的数组比预期的小
同样,当您执行t2.setText(list2.get(i))
(在customDecisionAdapter
中),检查大小,并在按索引读取时进行检查,如果(icheckarray2=intent.getStringArrayExtra(“List2”);
(在DecisionActivity
中)。它返回的数组大小小于预期
另外,当您执行t2.setText(list2.get(i));
(在customDecisionAdapter
中)时,请检查大小,并在按索引读取时进行检查如果(i请注意,您只返回列表1的大小
@Override
public int getCount() {
return list1.size();
}
无论如何,您只能返回一个列表的大小,这意味着如果list2与该大小不匹配,它将始终给出该错误。每当您使用多个列表的数据时,建议始终使用POJO类。请注意,您只返回list1的大小
@Override
public int getCount() {
return list1.size();
}
//Replace your adapter code with this, I have check the size of Arraylist
//inside getCount() and inside getview() method verify value
//of position not greater than size of Arraylist.
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 position, View view, ViewGroup viewGroup) {
View convertView = view;
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.customedecisio,viewGroup,false);
}
TextView t1 = (TextView) convertView.findViewById(R.id.textDisease);
TextView t2 = (TextView) convertView.findViewById(R.id.textTotal);
// Verify value of position not greater than size of ArrayList.
if(position < list1.size())
t1.setText(list1.get(position));
if(position< list2.size())
t2.setText(list2.get(position));
return convertView;
}
@Override
public int getCount()
{
if(list1.size() < list2.size())
return list2.size();
else
return list1.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
}
无论如何,您只能返回一个列表的大小,这意味着如果list2与该大小不匹配,它将始终给出该错误。每当您使用多个列表的数据时,建议始终使用POJO类。//用此替换适配器代码,我已经检查了Arraylist的大小
//Replace your adapter code with this, I have check the size of Arraylist
//inside getCount() and inside getview() method verify value
//of position not greater than size of Arraylist.
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 position, View view, ViewGroup viewGroup) {
View convertView = view;
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.customedecisio,viewGroup,false);
}
TextView t1 = (TextView) convertView.findViewById(R.id.textDisease);
TextView t2 = (TextView) convertView.findViewById(R.id.textTotal);
// Verify value of position not greater than size of ArrayList.
if(position < list1.size())
t1.setText(list1.get(position));
if(position< list2.size())
t2.setText(list2.get(position));
return convertView;
}
@Override
public int getCount()
{
if(list1.size() < list2.size())
return list2.size();
else
return list1.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
}
//内部getCount()和内部getview()方法验证值
//不大于Arraylist大小的位置。
公共类customDecisionAdapter扩展了BaseAdapter{
语境;
私有数组列表1;
私有数组列表2;
公共customDecisionAdapter(上下文上下文,ArrayList1,ArrayList2){
this.context=context;
this.list1=list1;
this.list2=list2;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组视图组){
视图=视图;
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(右布局。自定义决策,视图组,错误);
}
TextView t1=(TextView)convertView.findViewById(R.id.textDisease);
TextView t2=(TextView)convertView.findViewById(R.id.textTotal);
//验证位置值是否不大于ArrayList的大小。
如果(位置
//用这个替换适配器代码,我已经检查了Arraylist的大小
//内部getCount()和内部getview()方法验证值
//不大于Arraylist大小的位置。
公共类customDecisionAdapter扩展了BaseAdapter{
语境;
私有数组列表1;
私有数组列表2;
公共customDecisionAdapter(上下文上下文,ArrayList1,ArrayList2){
this.context=context;
this.list1=list1;
this.list2=list2;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组视图组){
视图=视图;
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(右布局。自定义决策,视图组,错误);
}
TextView t1=(TextView)convertView.findViewById(R.id.textDisease);
TextView t2=(TextView)convertView.findViewById(R.id.textTotal);
//验证位置值是否不大于ArrayList的大小。
如果(位置
“无效索引2,大小为2”
表示大小为2,因此有效索引仅为0和1。而索引2处没有任何内容。那么是什么导致了问题?为什么不使用Arr