且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何添加/从列表视图中的Andr​​oid删除项目在项目列表视图时,点击按钮

更新时间:2022-12-26 18:40:16

 公共类AndroidCustomListViewActivity延伸活动{
    私人的ListView myList中;
    私人MyAdapter myAdapter;
    私人ImageView的MYIMAGE;
    公共静态字符串上传=;
    公共静态字符串GalleryImage;
    公众的ArrayList<列表项> myItems =新的ArrayList<列表项>();

    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.listandimage);

        myList上=(ListView控件)findViewById(R.id.MyList);
        MYIMAGE =(ImageView的)findViewById(R.id.image1);

        myList.setItemsCanFocus(真正的);
        myAdapter =新MyAdapter();

        列表项的listItem =新的ListItem();
        listItem.textdata =@;
        listItem.caption =;
        myItems.add(的listItem);

        myList.setAdapter(myAdapter);
        myAdapter.notifyDataSetChanged();


    }


    公共类MyAdapter扩展了BaseAdapter {
        私人LayoutInflater mInflater;

        公共MyAdapter(){
            mInflater =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        }

        公众诠释getCount将(){
            返回myItems.size();
        }

        公共列表项的getItem(INT位置){
            返回myItems.get(位置);
        }

        众长getItemId(INT位置){
            返回的位置;
        }

        公共查看getView(最终诠释的立场,观点convertView,ViewGroup中父){
            最后ViewHolder持有人;
            如果(convertView == NULL){
                持有人=新ViewHolder();
                convertView = mInflater.inflate(R.layout.item,NULL);
                holder.text =(TextView中)convertView.findViewById(R.id.textView1);
                holder.captionEditText =(EditText上)convertView.findViewById(R.id.ItemCaption);

                holder.addOrDeleteButton =(按钮)convertView.findViewById(R.id.buttonAdd);

                holder.captionEditText.setFocusable(真正的);
                holder.captionEditText.requestFocus();

                convertView.setTag(保持器);
            } 其他 {
                支架=(ViewHolder)convertView.getTag();
            }

            //填写的EditText与你在数据源中的值
            // holder.captionEditText.setId(位置);
            holder.text.setTag(位置);
            holder.captionEditText.setTag(位置);
            holder.captionEditText.setText(的getItem(位置).caption);

            holder.addOrDeleteButton.setTag(位置);

            // /此更新的标签
            //按钮查看我们
            // 滚动 ///

            holder.addOrDeleteButton.setOnClickListener(新OnClickListener(){

                @覆盖
                公共无效的onClick(视图查看){
                    // TODO自动生成方法存根
                    INT标记=(整数)view.getTag();
                    如果(标记=(myItems.size() -  1)){
                        myItems.remove(标签);
                        Log.d(GCM+标签项目调离);
                        myAdapter.notifyDataSetChanged();
                    } 其他 {
                        列表项的listItem =新的ListItem();
                        listItem.textdata =@;
                        listItem.caption =;
                        myItems.add(的listItem);


                        / *
                         * Log.d(GCM,holder.captionEditText.getText()
                         *的ToString()); myItems.get((整数)
                         * view.getTag())。标题= holder.captionEditText
                         * .getText()的toString();
                         * /
                        myAdapter.notifyDataSetChanged();
                        myList.setSelection(myAdapter.getCount() -  1);
                        // holder.captionEditText.setFocusable(真正的);
                        // holder.captionEditText.requestFocus();

                    }
                }
            });

            holder.captionEditText.addTextChangedListener(新TextWatcher(){

                公共无效onTextChanged(CharSequence中,诠释开始,
                        INT之前,诠释计数){
                    // TODO自动生成方法存根

                }

                公共无效beforeTextChanged(CharSequence中,诠释开始,
                        诠释计数,之后INT){
                    // TODO自动生成方法存根

                }

                公共无效afterTextChanged(编辑S){
                    //如果(位置< myItems.size())
                    //的getItem(位置).caption = s.toString();

                    myItems.get((整数)holder.captionEditText.getTag())。标题= holder.captionEditText
                            .getText()的toString()。

                }
            });

            如果(位置=(myItems.size() -  1)){
                holder.addOrDeleteButton.setBackgroundResource(R.drawable.fruttarecloseicon);
            } 其他 {
                holder.addOrDeleteButton.setBackgroundResource(R.drawable.fruttareaddicon);
                holder.text.setFocusable(真正的);
                holder.captionEditText.setFocusable(真正的);
                holder.text.requestFocus();
                holder.captionEditText.requestFocus();

            }

            返回convertView;
        }

    }

    类ViewHolder {

        TextView的文字;
        的EditText captionEditText;
        按钮addOrDeleteButton;
    }

    类列表项{
        字符串的TextData;
        字符串标题;
    }
}
 

根据您的需要使用code编辑它。

 < XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:方向=横向
     >

    <的TextView
        机器人:ID =@ + ID / textView1
        机器人:layout_width =15dp
        机器人:layout_height =50dp
        机器人:文本=@
       />

    <的EditText
        机器人:ID =@ + ID / ItemCaption
        机器人:layout_width =270dp
        机器人:layout_height =50dp
        机器人:layout_margin =3dip
        机器人:imeOptions =actionDone | flagNoExtractUi
        机器人:inputType =textNoSuggestions
        机器人:单线=真正的>
    < /的EditText>

    <按钮
        机器人:ID =@ + ID / buttonAdd
        机器人:layout_width =75dp
        机器人:layout_height =50dp
        机器人:layout_margin =3dip
        />

< / LinearLayout中>


< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:后台=#FFF
    机器人:方向=横向>

    <的ListView
        机器人:ID =@ + ID / MYLIST
        机器人:layout_width =370dp
        机器人:layout_height =160dp
        机器人:layout_gravity =中心|顶
        机器人:layout_marginLeft =150dp
        机器人:descendantFocusability =beforeDescendants
             >
    < / ListView控件>

    < ImageView的
        机器人:ID =@ + ID /此搜索
        机器人:layout_width =80dp
        机器人:layout_height =80dp

         />

< / LinearLayout中>
 

标记正确的答案,如果它是有用的!

I'm a newbie android.I have some problem about my mini app. You can see figure below: http://i481.photobucket.com/albums/rr175/viethungit/android.png

Firstly,row 1(layout 1) appear listview when click button add in row 1, row 2(layout 2) appear, and continue...click button add in row 1 ,layout 2 appear in listview.... I try search from Mr.Google but i don't find... Anybody could help me!

This is layout, and activity I don't know how to implement

add_item.xml
<?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="fill_parent"
    android:layout_height="wrap_content"
    android:background="#EEEEEE"
    android:orientation="horizontal"
    android:padding="5dip">

    <!-- Image Item-->
    <ImageButton
            android:id="@+id/imgItem"
            android:layout_width="40dip"
            android:layout_height="40dip"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="2dp"
            android:contentDescription="@string/imgView"  />

    <!-- Name item  -->

    <EditText
        android:id="@+id/edtItem"
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:layout_marginLeft="5dp"
        android:layout_toRightOf="@+id/imgItem"
        android:background="@drawable/bg"
        android:hint="@string/txtTitle"
        android:textSize="20dip" />   

    <!-- Button add -->
    <Button        
        android:id="@+id/btnAdd"
        android:background="@drawable/add"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"/>
    <!-- item -->
    <TextView
        android:id="@+id/txtSubtitle"
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:layout_toLeftOf="@+id/btnAdd"
        android:gravity="right|center_vertical"
        android:layout_centerVertical="true"
        android:textSize="20dip"
        android:text="@string/txtSubtitle" />

</RelativeLayout>


plus_item.xml
<?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="fill_parent"
    android:layout_height="wrap_content"
    android:background="#EEEEEE"
    android:orientation="horizontal"
    android:padding="5dip" >

    <!-- Image Item -->
    <ImageView
        android:id="@+id/imgItem"
        android:src="@drawable/chomsao"
        android:layout_width="40dip"
        android:layout_height="40dip"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="2dp"
        android:contentDescription="@string/imgView" />

    <!-- Name Item -->
    <TextView
        android:id="@+id/edtItem"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginLeft="5dp"
        android:layout_toRightOf="@+id/imgItem"
        android:layout_centerVertical="true"
        android:gravity="center_vertical"
        android:text="@string/txtTitle"
        android:textSize="20dip" />

    <!-- Quantity Item -->
    <TextView 
        android:id="@+id/txtQtyItem"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_toRightOf="@id/edtItem"
        android:layout_marginLeft="20dp"
        android:gravity="center_vertical"
        android:textSize="20dip"
        android:text="@string/QuantityItem"/>

    <!-- Button plus -->
    <Button
        android:id="@+id/btnPlus"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="@drawable/plus" />

    <!-- Button minus -->
    <Button
        android:id="@+id/btnMinus"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerVertical="true"
        android:layout_alignBaseline="@id/btnPlus"
        android:layout_toLeftOf="@+id/btnPlus"
        android:background="@drawable/minus" />

    <!-- Price Item -->
    <TextView
        android:id="@+id/txtSubtitle"
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/btnMinus"
        android:gravity="right|center_vertical"
        android:text="@string/txtSubtitle"
        android:textSize="20dip" />

</RelativeLayout>



activity_main.xml
        <RelativeLayout 
        android:id="@+id/relative1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/relative"
        android:layout_above="@id/relative2"
        android:background="#EEEEEE"
        android:layout_marginLeft="1.5dp"
        android:layout_marginRight="1.5dp"
        android:layout_marginTop="1.5dp">

        <ListView
            android:id="@+id/listSale"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>        
    </RelativeLayout>

public class AndroidCustomListViewActivity extends Activity {
    private ListView myList;
    private MyAdapter myAdapter;
    private ImageView myImage;
    public static  String upload= " ";
    public static String GalleryImage;
    public ArrayList<ListItem> myItems = new ArrayList<ListItem>();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listandimage);

        myList = (ListView) findViewById(R.id.MyList);
        myImage= (ImageView)findViewById(R.id.image1);

        myList.setItemsCanFocus(true);
        myAdapter = new MyAdapter();

        ListItem listItem = new ListItem();
        listItem.textdata="@";
        listItem.caption = "";
        myItems.add(listItem);

        myList.setAdapter(myAdapter);
        myAdapter.notifyDataSetChanged();


    }


    public class MyAdapter extends BaseAdapter {
        private LayoutInflater mInflater;

        public MyAdapter() {
            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        }

        public int getCount() {
            return myItems.size();
        }

        public ListItem getItem(int position) {
            return myItems.get(position);
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(final int position, View convertView, ViewGroup parent) {
            final ViewHolder holder;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = mInflater.inflate(R.layout.item, null);
                holder.text=(TextView )convertView.findViewById(R.id.textView1); 
                holder.captionEditText = (EditText) convertView.findViewById(R.id.ItemCaption);

                holder.addOrDeleteButton = (Button) convertView.findViewById(R.id.buttonAdd);

                holder.captionEditText.setFocusable(true);
                holder.captionEditText.requestFocus();

                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            // Fill EditText with the value you have in data source
            // holder.captionEditText.setId(position);
            holder.text.setTag(position);
            holder.captionEditText.setTag(position);
            holder.captionEditText.setText(getItem(position).caption);

            holder.addOrDeleteButton.setTag(position);

            // / this updates tag of
            // the button view as we
            // scroll ///

            holder.addOrDeleteButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View view) {
                    // TODO Auto-generated method stub
                    int tag = (Integer) view.getTag();
                    if (tag != (myItems.size() - 1)) {
                        myItems.remove(tag);
                        Log.d("GCM", "Item removed from " + tag);
                        myAdapter.notifyDataSetChanged();
                    } else {
                        ListItem listItem = new ListItem();
                        listItem.textdata="@";
                        listItem.caption = "";
                        myItems.add(listItem);


                        /*
                         * Log.d("GCM", holder.captionEditText.getText()
                         * .toString()); myItems.get((Integer)
                         * view.getTag()).caption = holder.captionEditText
                         * .getText().toString();
                         */
                        myAdapter.notifyDataSetChanged();
                        myList.setSelection(myAdapter.getCount() - 1);
                        // holder.captionEditText.setFocusable(true);
                        // holder.captionEditText.requestFocus();

                    }
                }
            });

            holder.captionEditText.addTextChangedListener(new TextWatcher() {

                public void onTextChanged(CharSequence s, int start,
                        int before, int count) {
                    // TODO Auto-generated method stub

                }

                public void beforeTextChanged(CharSequence s, int start,
                        int count, int after) {
                    // TODO Auto-generated method stub

                }

                public void afterTextChanged(Editable s) {
                    // if(position < myItems.size())
                    // getItem(position).caption = s.toString();

                    myItems.get((Integer) holder.captionEditText.getTag()).caption = holder.captionEditText
                            .getText().toString();

                }
            });

            if (position != (myItems.size() - 1)) {
                holder.addOrDeleteButton.setBackgroundResource(R.drawable.fruttarecloseicon);
            } else {
                holder.addOrDeleteButton.setBackgroundResource(R.drawable.fruttareaddicon);
                holder.text.setFocusable(true);
                holder.captionEditText.setFocusable(true);
                holder.text.requestFocus();
                holder.captionEditText.requestFocus();

            }

            return convertView;
        }

    }

    class ViewHolder {

        TextView text;
        EditText captionEditText;
        Button addOrDeleteButton;
    }

    class ListItem {
        String textdata;
        String caption;
    }
}

use this code edit it according to your need.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
     >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="15dp"
        android:layout_height="50dp"
        android:text=" @"
       />

    <EditText
        android:id="@+id/ItemCaption"
        android:layout_width="270dp"
        android:layout_height="50dp"
        android:layout_margin="3dip"
        android:imeOptions="actionDone|flagNoExtractUi"
        android:inputType="textNoSuggestions"
        android:singleLine="true" >
    </EditText>

    <Button
        android:id="@+id/buttonAdd"
        android:layout_width="75dp"
        android:layout_height="50dp"
        android:layout_margin="3dip"
        />

</LinearLayout>


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#fff"
    android:orientation="horizontal" >

    <ListView
        android:id="@+id/MyList"
        android:layout_width="370dp"
        android:layout_height="160dp"
        android:layout_gravity="center|top"
        android:layout_marginLeft="150dp"
        android:descendantFocusability="beforeDescendants" 
             >
    </ListView>

    <ImageView
        android:id="@+id/image1"
        android:layout_width="80dp"
        android:layout_height="80dp"

         />

</LinearLayout>

mark the answer right if it was useful!!