android ListView中含有按钮事件实时更新ListView数据案例-2
ListView 控件点击listview item 实时更新数据案例.
效果如下:
点击list item 右边的选中状态对应的发生改变。
1、布局文件
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ChoseRoomActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/listview_all_room" android:layout_width="match_parent" android:layout_height="match_parent" android:cacheColorHint="@android:color/transparent" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:listSelector="@android:color/transparent" android:layout_marginTop="30dp" android:layout_marginRight="30dp" android:layout_marginLeft="30dp" /> </RelativeLayout> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
2、activity
package com.jas.activity; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.jas.adapter.RoomAdapter; import com.jas.model.RoomModel; import java.util.ArrayList; import java.util.List; public class ChoseRoomActivity extends AppCompatActivity { private List<RoomModel> list; private ListView listView; private RoomAdapter roomAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chose_room); list = new ArrayList<>(); list.add(new RoomModel("0001","客厅")); list.add(new RoomModel("0002","主卧")); list.add(new RoomModel("0003","次卧")); list.add(new RoomModel("0004","厨房")); list.add(new RoomModel("0005","卫生间")); initView(); } private void initView(){ listView = findViewById(R.id.listview_all_room); roomAdapter = new RoomAdapter(this,list); listView.setAdapter(roomAdapter); roomAdapter.SetOnClickListener(new RoomAdapter.OnClickListener() { @Override public void ClickListener(String roomName) { setSelected(roomName); } }); } private void setSelected(String roomName){ for(RoomModel r : list){ if(roomName.equals(r.getRoomName())){ r.setSelected(true); }else{ r.setSelected(false); } } roomAdapter.notifyDataSetChanged(); } }
3、RoomAdapter
package com.jas.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.jas.activity.R; import com.jas.model.RoomModel; import java.util.List; public class RoomAdapter extends BaseAdapter { private List<RoomModel> mlist; private LayoutInflater inflater; private Context context; private OnClickListener onClickListener; public RoomAdapter(Context context, List<RoomModel> list) { this.context = context; this.mlist = list; inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return mlist.size(); } @Override public Object getItem(int position) { return mlist.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null) { convertView = inflater.inflate(R.layout.item_layout_room,null); } TextView idView = (TextView)convertView.findViewById(R.id.tv_room); ImageView ivView = (ImageView)convertView.findViewById(R.id.iv_status); final RoomModel p = mlist.get(position); final int pos = position; String roomName = p.getRoomName(); idView.setText(roomName); if(p.isSelected()){ ivView.setImageResource(R.drawable.ic_room_selected); }else{ ivView.setImageResource(R.drawable.ic_room_no_selected); } idView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(onClickListener!=null){ onClickListener.ClickListener(roomName); } } }); ivView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(onClickListener!=null){ onClickListener.ClickListener(roomName); } } }); return convertView; } public void SetOnClickListener(OnClickListener clickListener){ onClickListener = clickListener; } public interface OnClickListener{ void ClickListener(String name); } }
4、list item 布局文件,item_layout_room.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/shape_dev_bg" android:orientation="horizontal" android:paddingTop="20dp" android:paddingBottom="20dp" android:layout_marginTop="10dp" android:layout_marginBottom="10dp"> <TextView android:id="@+id/tv_room" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="12" android:textColor="@color/home_txt2" android:layout_marginLeft="20dp" android:textSize="16sp"></TextView> <ImageView android:id="@+id/iv_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_room_no_selected" android:layout_marginRight="20dp"></ImageView> </LinearLayout> </LinearLayout>
5、RoomModel
package com.jas.model; public class RoomModel { public RoomModel() { } public RoomModel(String roomId, String roomName) { this.roomId = roomId; this.roomName = roomName; } private String roomId; private String roomName; private boolean selected; public String getRoomId() { return roomId; } public void setRoomId(String roomId) { this.roomId = roomId; } public String getRoomName() { return roomName; } public void setRoomName(String roomName) { this.roomName = roomName; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2020-05-12 Android 判定APP是否启动、Activity是否运行,通过Service来启动已关闭的Activity
2018-05-12 C#使用Selenium+PhantomJS抓取数据
2015-05-12 js scroll函数
2015-05-12 使用jQuery实现返回顶部功能