1. 效果预览
2. 在布局文件中放置 ListView 控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
3. 创建 ListView 的 item 布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_interaction"
android:layout_alignParentStart="true"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_interaction"
android:layout_toEndOf="@+id/iv_interaction"
android:layout_centerVertical="true"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="RelativeOverlap" />
<ImageView
android:id="@+id/messages_into"
android:layout_alignParentEnd="true"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ContentDescription" />
</RelativeLayout>
4. 创建实体类
public class InteractionBean {
private final int iv_interaction;
private final String tv_interaction;
private final int messages_into;
public InteractionBean(int iv_interaction, String tv_interaction, int messages_into){
this.iv_interaction = iv_interaction;
this.tv_interaction = tv_interaction;
this.messages_into = messages_into;
}
public int getIv_interaction() {
return iv_interaction;
}
public String getTv_interaction() {
return tv_interaction;
}
public int getMessages_into() {
return messages_into;
}
}
5. 创建适配器继承自 BaseAdapter
public class InteractionAdapter extends BaseAdapter {
private final Context context;
private final List<InteractionBean> interactions;
public InteractionAdapter(Context context, List<InteractionBean> interactions){
this.context = context;
this.interactions = interactions;
}
@Override
public int getCount() {
return interactions.size();
}
@Override
public Object getItem(int i) {
return interactions.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null){
view = LayoutInflater.from(context).inflate(R.layout.interaction_item, viewGroup, false);
holder = new ViewHolder();
holder.iv_interaction = view.findViewById(R.id.iv_interaction);
holder.tv_interaction = view.findViewById(R.id.tv_interaction);
holder.messages_into = view.findViewById(R.id.messages_into);
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
holder.iv_interaction.setImageResource(interactions.get(i).getIv_interaction());
holder.tv_interaction.setText(interactions.get(i).getTv_interaction());
holder.messages_into.setImageResource(interactions.get(i).getMessages_into());
return view;
}
static class ViewHolder{
ImageView iv_interaction;
TextView tv_interaction;
ImageView messages_into;
}
}
6. 为 item 设置数据,为 ListView 设置适配器
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.listView);
List<InteractionBean> interactions = new ArrayList<>();
InteractionAdapter adapter = new InteractionAdapter(MainActivity.this, interactions);
InteractionBean at = new InteractionBean(R.drawable.messages_at, "有人@你", R.drawable.messages_into);
InteractionBean comment = new InteractionBean(R.drawable.messages_comment, "评论提醒", R.drawable.messages_into);
InteractionBean like = new InteractionBean(R.drawable.messages_like, "点赞提醒", R.drawable.messages_into);
interactions.add(at);
interactions.add(comment);
interactions.add(like);
listView.setAdapter(adapter);
}
}