为了账号安全,请及时绑定邮箱和手机立即绑定

如何为列表视图中的每个项目设置更新和删除按钮

如何为列表视图中的每个项目设置更新和删除按钮

一只名叫tom的猫 2023-02-16 15:16:14
activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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=".MainActivity">     <ScrollView         android:id="@+id/scroll_view"         android:layout_width="match_parent"         android:layout_height="match_parent">         <LinearLayout             android:id="@+id/linearlayout1"             android:layout_width="match_parent"        android:layout_height="match_parent"             android:orientation="vertical">             <TextView                 android:id="@+id/tv_name1"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:layout_marginLeft="30dp"                 android:layout_marginTop="15dp"                 android:layout_marginRight="30dp"                 android:padding="15dp"                 android:text="Name:"                 android:textSize="15sp" />             <EditText                 android:id="@+id/et_name1"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:layout_marginLeft="30dp"                 android:layout_marginRight="30dp"                 android:hint="Enter Your Name"                 android:padding="15dp"                 android:textSize="15sp" />            </LinearLayout>         </LinearLayout>    </ScrollView> </RelativeLayout>
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

您需要在列表项的布局中添加两个按钮,例如更新和删除。所以列表持有者类看起来像:


class ViewHolder {

    TextView tv_name;

    TextView tv_email;

    TextView tv_contact;

    TextView tv_dob;

    TextView tv_qualification;

    TextView tv_time;

    Button btn_update; //Update for item

    Button btn_delete; //Delete an item.

}

完成此操作后,请在适配器的 getView() 方法中执行以下操作。仔细观察注释,进一步理解实现逻辑。


    public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    if (convertView == null) {

        holder = new ViewHolder();

        convertView = LayoutInflater.from(mContext).inflate(R.layout.second_layout, parent, false);

        holder.tv_name = (TextView) convertView.findViewById(R.id.tv_name1);

        holder.tv_contact = (TextView) convertView.findViewById(R.id.tv_phoneno);

        holder.tv_email=(TextView)convertView.findViewById(R.id.tv_email);

        holder.tv_dob=(TextView)convertView.findViewById(R.id.tv_dob);

        holder.tv_qualification=(TextView)convertView.findViewById(R.id.tv_qualification);

        holder.tv_time=(TextView)convertView.findViewById(R.id.tv_time);


        //bind holder.btn_update and holder.btn_delete here


        convertView.setTag(holder);

    } else {

        holder = (ViewHolder) convertView.getTag();

    }


    holder.tv_name.setText(mPersonList.get(position).getName());

    holder.tv_contact.setText(mPersonList.get(position).getContactno());

    holder.tv_email.setText(mPersonList.get(position).getEmail());

    holder.tv_dob.setText(mPersonList.get(position).getDatepicker());

    holder.tv_qualification.setText(mPersonList.get(position).getQualification());

    holder.tv_time.setText(mPersonList.get(position).getTimepicker());


    holder.btn_update.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            //Call your dialog to update and pass "mPersonList.get(position)" model so that data in the model will be updated.

            //Once update is done call refreshList() from the confirmation dialog button.

        }

    });


    holder.btn_delete.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            mPersonList.remove(position);

            refreshList();

        }

    });


    return convertView;


}


private void refreshList() {

    notifyDataSetChanged();

}

一个建议,尽量避免像学生那样使用 button1、button2、editText1、textView1 等变量。取而代之的是,为变量使用适当且有意义的名称。


查看完整回答
反对 回复 2023-02-16
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您可以使用按钮单击侦听器将逻辑放在 getView() 方法中。



查看完整回答
反对 回复 2023-02-16
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信