Android列表适配器-仅提供一个值
我有一个listview适配器,它从数组中获取数据,并将它们放入listview。但是,listview将只显示数组中的一项,并在listview的所有行中显示它。这是我的密码,有什么问题吗Android列表适配器-仅提供一个值,android,listview,android-listview,Android,Listview,Android Listview,我有一个listview适配器,它从数组中获取数据,并将它们放入listview。但是,listview将只显示数组中的一项,并在listview的所有行中显示它。这是我的密码,有什么问题吗 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_2, android.R.id.text1, Main
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_2, android.R.id.text1, MainActivity.values) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text1 = (TextView) view.findViewById(android.R.id.text1);
TextView text2 = (TextView) view.findViewById(android.R.id.text2);
int i = 0;
int p = 0;
text1.setText(MainActivity.values[i]);
text2.setText(MainActivity.numvalues[i]);
i++;
return view;
}
};
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
ArrayAdapter=new ArrayAdapter(getApplicationContext(),android.R.layout.simple\u list\u item\u 2,android.R.id.text1,MainActivity.values){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
TextView text1=(TextView)view.findViewById(android.R.id.text1);
TextView text2=(TextView)view.findViewById(android.R.id.text2);
int i=0;
int p=0;
text1.setText(MainActivity.values[i]);
text2.setText(MainActivity.numvalues[i]);
i++;
返回视图;
}
};
setAdapter(适配器);
adapter.notifyDataSetChanged();
}
尝试替换这些行
int i = 0;
int p = 0;
text1.setText(MainActivity.values[i]);
text2.setText(MainActivity.numvalues[i]);
i++;
与
text1.setText(MainActivity.values[position]);
text2.setText(MainActivity.numvalues[position]);
在您的代码中,每次i的值被初始化为0时,这就是为什么在listview中只会看到重复的那一行尝试使用
position
从数组中获取值,而不是i
,它为每个项设置了0:
text1.setText(MainActivity.values[position]);
text2.setText(MainActivity.numvalues[position]);
你做错了。在
getView
方法中,每次都要初始化i
int i = 0;
int p = 0;
text1.setText(MainActivity.values[i]);
text2.setText(MainActivity.numvalues[i]);
i++;
更改您的代码如下
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_2, android.R.id.text1, MainActivity.values) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text1 = (TextView) view.findViewById(android.R.id.text1);
TextView text2 = (TextView) view.findViewById(android.R.id.text2);
text1.setText(MainActivity.values[position]);
text2.setText(MainActivity.numvalues[position]);
return view;
}
};
listView.setAdapter(adapter);
}
ArrayAdapter=new ArrayAdapter(getApplicationContext(),android.R.layout.simple\u list\u item\u 2,android.R.id.text1,MainActivity.values){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
TextView text1=(TextView)view.findViewById(android.R.id.text1);
TextView text2=(TextView)view.findViewById(android.R.id.text2);
text1.setText(MainActivity.values[position]);
text2.setText(MainActivity.numvalues[position]);
返回视图;
}
};
setAdapter(适配器);
}
使用位置而不是i