Androidstudio怎样将 textview和imagView显示在MainActivity的listview上,并且从listview的第二行开始存放数据,自定义适配器继承simpleadapter
时间: 2024-02-13 22:07:04 浏览: 73
通过自定义adapter来显示listview
首先,你需要在 `MainActivity` 的布局文件中添加一个 `ListView`。然后,在 `MainActivity` 中定义一个数据集合,用于存储要在 `ListView` 中显示的数据。在 `onCreate()` 方法中,实例化该数据集合,并为它添加一些数据。接着,创建一个自定义的适配器类,继承 `SimpleAdapter`。在适配器类中重写 `getView()` 方法,用于设置每一行数据的布局和内容。最后,将适配器设置给 `ListView`。
下面是一个示例代码:
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private List<Map<String, Object>> mData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = findViewById(R.id.list_view);
// 初始化数据集合
mData = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Map<String, Object> item = new HashMap<>();
item.put("text", "Text " + i);
item.put("image", R.drawable.ic_launcher_foreground);
mData.add(item);
}
// 创建适配器并设置给ListView
MyAdapter adapter = new MyAdapter(this, mData, R.layout.list_item,
new String[]{"text", "image"}, new int[]{R.id.text_view, R.id.image_view});
mListView.setAdapter(adapter);
}
// 自定义适配器类
private static class MyAdapter extends SimpleAdapter {
private List<? extends Map<String, ?>> mData;
public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
mData = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
// 从第二行开始设置数据
if (position >= 1) {
Map<String, Object> item = mData.get(position);
TextView textView = view.findViewById(R.id.text_view);
ImageView imageView = view.findViewById(R.id.image_view);
textView.setText((String) item.get("text"));
imageView.setImageResource((Integer) item.get("image"));
}
return view;
}
}
}
```
activity_main.xml:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
```
list_item.xml:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp">
<ImageView
android:id="@+id/image_view"
android:layout_width="64dp"
android:layout_height="64dp"
android:src="@drawable/ic_launcher_background" />
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:textAppearance="?android:textAppearanceMedium" />
</LinearLayout>
```
注意:在 `getView()` 方法中,我们从第二行开始设置数据,因为第一行是 `ListView` 的标题栏,不需要设置数据。如果你不需要标题栏,可以在布局文件中将其去掉。
阅读全文