0

我从数据库中获取菜单名称,然后附加到自定义列表视图编辑文本。现在我正在更改 edittext 中的一些值。我希望将 edittext 值更改的所有值放入数组中

           Example :x,y,z menunames comes from database i append editext(Custom listview)
           now i am changed y to b 
           now i want x,b,z in arraylist 

我试试这个代码(基本适配器类)

           public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;


    if (convertView == null) {
        holder = new ViewHolder();
        convertView = inflater.inflate(R.layout.editmainmenulist, null);
        holder.caption = (EditText) convertView
                .findViewById(R.id.editmaimenu);
        holder.caption1=(ImageView) convertView.findViewById(R.id.menuimage);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    //Fill EditText with the value you have in data source
    holder.caption.setText(itemnames[position]);
    holder.caption.setId(position);
    holder.caption1.setImageBitmap(bmps[position]);


    arr.add(holder.caption.getText().toString());//here i get menunames data only not changed edittext values



    return convertView;
}
  }

 class ViewHolder {
EditText caption;
ImageView caption1;
}

 class ListItem {
String caption;
 }

请帮我

4

2 回答 2

0

如果新数据来自数据库,那么您必须再次调用游标并再次 setAdapter 到 listView..

或者如果数据已经在数组列表中,那么您只是用来使 listView 无效。n 再次设置适配器......你会得到你想要的......

于 2012-04-10T06:15:10.020 回答
0

将数据保留在arraylist中,并在更改arraylist中的文本后,使用适配器再次调用listview,如下所示

      lv.invalidate(); // it will rebuilt all the views in listview
      adapter=new adapterclass(this);
      lv.setAdapter(adapter);

它会改变listview的值并调用listview的invalidateview方法,它会改变listview的数据。试试看。它可能会帮助你。

于 2012-04-10T05:32:13.467 回答