Android列表适配器-仅提供一个值

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

我有一个listview适配器,它从数组中获取数据,并将它们放入listview。但是,listview将只显示数组中的一项,并在listview的所有行中显示它。这是我的密码,有什么问题吗

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