ListView视图动态增加与删除控件条目,内容

    xiaoxiao2021-03-26  23

       Listview动态增加与删除控件条目,条目内容可编辑,实现如下效果:

    1、按+则增加控件条目,按x删除控件条目

    2、编辑内容可保存,如下所示:

    从网上找到一些代码不能用或有缺陷,现在将代码整理OK如下;

    MainActivity代码(比较简单):

    package com.example.listviewasitem; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity {  private ListView myList; // ListView控件  private AddNumberBaseAdpater addNumberBaseAdpater;    public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   addNumberBaseAdpater=new AddNumberBaseAdpater(getApplicationContext());   myList = (ListView) findViewById(R.id.listview1);   myList.setAdapter(addNumberBaseAdpater);               } } AddNumberBaseAdpater代码: package com.example.listviewasitem; import java.util.ArrayList; import android.content.Context; import android.text.Editable; import android.text.Selection; import android.text.SpannableStringBuilder; import android.text.TextWatcher; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ImageButton; import android.widget.TextView; public class AddNumberBaseAdpater extends BaseAdapter {  private LayoutInflater mInflater;  private ArrayList<String> text;  int tindex = 0;  String temp;  int sp;  public AddNumberBaseAdpater(Context context) {   text = new ArrayList<String>();   text.add("第1个自定义控件条目");// 默认只加载1个Item   this.mInflater = LayoutInflater.from(context);  }  public int getCount() {   // TODO Auto-generated method stub   return text.size();  }  public Object getItem(int position) {   return text.get(position);  }  public long getItemId(int position) {   // TODO Auto-generated method stub   return position;  }  public View getView(final int position, View convertView, ViewGroup parent) {   // TODO Auto-generated method stub   // final ViewHolder holder = new ViewHolder();   final ViewHolder holder;// 新建holder一定要放在if内   if (convertView == null) {    holder = new ViewHolder();// 新建holder一定要放在if内    convertView = mInflater.inflate(R.layout.addnumber, null);    holder.btnOpen = (ImageButton) convertView      .findViewById(R.id.ibtnAddNumber);    holder.editText = (EditText) convertView      .findViewById(R.id.editNumber);    convertView.setTag(holder);   } else {    // Log.d("getView","getView called convertView !== null ");    holder = (ViewHolder) convertView.getTag();   }   //   switch (position) {// 不要以为XML文件中是2个按钮,其实只有一个   case 0:    holder.btnOpen      .setBackgroundResource(android.R.drawable.ic_input_add);// 第一项按钮则显示加号图片    // holder.editText.setText(text.get(tindex));    break;   default:    holder.btnOpen.setBackgroundResource(android.R.drawable.ic_delete);// 超过了一项则显示减号图片,可以删除    break;   }   holder.editText.setText(text.get(position));   holder.ref = position;   // //   //添加EditText文本输入并保存到text.   holder.editText     .setOnFocusChangeListener(new View.OnFocusChangeListener() {      @Override      public void onFocusChange(View v, boolean hasFocus) {       // TODO Auto-generated method stub       holder.editText.getText();       text.remove(position);       text.add(position, holder.editText.getText().toString());      }     });   holder.btnOpen.setOnClickListener(new View.OnClickListener() {// 添加按钮      public void onClick(View v) {       if (position == 0) {        // text.add("xxx");// 添加一项控件        tindex = tindex + 1;        text.add("第" + String.valueOf(tindex + 1)          + "自定义控件条目:");// 添加一项控件       } else if (position > 0) {// 始终留一项不能删除        text.remove(position);// 删除选定按钮        // text.remove(text.size() - 1);// 删除最后一个按钮        tindex = tindex - 1;       }       notifyDataSetChanged();      }     });   return convertView;  }  private class ViewHolder {   public EditText editText;   public ImageButton btnOpen;   int ref;  } } 布局文件比较简单,就不传了。原代码下载地址:http://download.csdn.net/detail/xiaozenbin/9747532

    转载请注明原文地址: https://ju.6miu.com/read-661371.html

    最新回复(0)