package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { ImageView imageView; TextView textView; ListView listView; String name[]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView=findViewById(R.id.listview); name=new String[]{"我","人","他","怕"}; List<Map<String,Object>> mapList=new ArrayList<Map<String,Object>>(); for(int i=1;i<5;i++){ Map<String,Object> listitem=new HashMap<String,Object>(); listitem.put("name",name[i]); listitem.put("image",R.drawable.blue); mapList.add(1,listitem); } SimpleAdapter adapter=new SimpleAdapter(this,mapList,R.layout.item,new String[]{"name","image"},new int[]{R.id.textView,R.id.imageView}); listView.setAdapter(adapter); } }为什么错
时间: 2024-01-16 07:02:21 浏览: 108
这段代码存在以下问题:
1. `for` 循环的初始值应该是 0,而不是 1。因为数组的下标从 0 开始,如果从 1 开始循环,就会漏掉第一个元素。
2. `mapList.add(1, listitem)` 的使用是有问题的。在添加元素时,不应该指定位置参数,因为这样会导致元素位置错乱。正确的方法是使用 `mapList.add(listitem)`,将元素添加到列表的末尾。
正确的代码应该是这样的:
```java
public class MainActivity extends AppCompatActivity {
ImageView imageView;
TextView textView;
ListView listView;
String name[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listview);
name = new String[]{"我", "人", "他", "怕"};
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 4; i++) {
Map<String, Object> listitem = new HashMap<String, Object>();
listitem.put("name", name[i]);
listitem.put("image", R.drawable.blue);
mapList.add(listitem);
}
SimpleAdapter adapter = new SimpleAdapter(
this,
mapList,
R.layout.item,
new String[]{"name", "image"},
new int[]{R.id.textView, R.id.imageView}
);
listView.setAdapter(adapter);
}
}
```
这样就能正确地显示列表了。
阅读全文