Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用自定义baseAdapter从listview中删除行_Android_Listview_Baseadapter - Fatal编程技术网

Android 使用自定义baseAdapter从listview中删除行

Android 使用自定义baseAdapter从listview中删除行,android,listview,baseadapter,Android,Listview,Baseadapter,您好,我有一个带有CustomBaseAdapter的ListView。ListView包含EditText和DeleteButton。现在我想删除button click事件中的行。我尝试了adapter.removeViewAt(int)方法,但它给了我一个例外,AdapterView不支持removeViewAt(int)。我尝试了许多解决方案,但都不管用。请帮助我 我得到以下错误日志- 12-01 12:28:53.499: W/System.err(464): java.lang.Un

您好,我有一个带有CustomBaseAdapter的ListView。ListView包含EditText和DeleteButton。现在我想删除button click事件中的行。我尝试了adapter.removeViewAt(int)方法,但它给了我一个例外,AdapterView不支持removeViewAt(int)。我尝试了许多解决方案,但都不管用。请帮助我

我得到以下错误日志-

12-01 12:28:53.499: W/System.err(464): java.lang.UnsupportedOperationException: removeView(View) is not supported in AdapterView
12-01 12:28:53.499: W/System.err(464):  at android.widget.AdapterView.removeView(AdapterView.java:489)
12-01 12:28:53.499: W/System.err(464):  at android.view.View.performClick(View.java:2408)
12-01 12:28:53.499: W/System.err(464):  at android.view.View$PerformClick.run(View.java:8816)
12-01 12:28:53.499: W/System.err(464):  at android.os.Handler.handleCallback(Handler.java:587)
12-01 12:28:53.499: W/System.err(464):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-01 12:28:53.509: W/System.err(464):  at android.os.Looper.loop(Looper.java:123)
12-01 12:28:53.519: W/System.err(464):  at android.app.ActivityThread.main(ActivityThread.java:4627)
12-01 12:28:53.519: W/System.err(464):  at java.lang.reflect.Method.invokeNative(Native Method)
12-01 12:28:53.519: W/System.err(464):  at java.lang.reflect.Method.invoke(Method.java:521)
12-01 12:28:53.519: W/System.err(464):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-01 12:28:53.519: W/System.err(464):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-01 12:28:53.519: W/System.err(464):  at dalvik.system.NativeStart.main(Native Method)
我的适配器是-

公共类LazyAdapter扩展了BaseAdapter{

private Activity activity;   
private static LayoutInflater inflater=null;
private int noofrows;
private int LayoutRid;


static Map<Integer, String> Amt = new LinkedHashMap<Integer, String>();
static String AmtValue;


public LazyAdapter(Activity a, int rows, int Layoutid) {
    activity = a;       
    noofrows = rows;
    LayoutRid = Layoutid;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        
}


public int getCount() {
    return noofrows;
}

public Object getItem(int position) {
    return position;
}

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


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

    ViewHolder holder = new ViewHolder();


    convertView = inflater.inflate(_LayoutRid, null );  

        holder.Amount = (EditText)convertView.findViewById(R.id.SESDedCCetDedAmount);

        holder.btnDel = (Button)convertView.findViewById(R.id.btnMinus);

        convertView.setTag(holder);     


        holder.Amount.setText(AmtValue == null? "" : AmtValue);
        holder.btnDel.setText(CodeValue == null? "" : CodeValue);


        holder.Amount.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start, int before, int count) {


            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {

            }

            public void afterTextChanged(Editable s) {
                Amt.put(position, s.toString());
            }
        });


        holder.btnDel.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                // Take List from parent view
                ParentActivity.list.removeViewAt(position);
                notifyDataSetChanged();
            }
        });


    return convertView;
}

static class ViewHolder {

    EditText Amount;
    Button btnDel;

}
私人活动;
专用静态充气机=空;
私人住宅区;
私人内部布局;
静态映射金额=新建LinkedHashMap();
静态字符串AmtValue;
公共LazyAdapter(活动a,int行,int布局ID){
活动=a;
noofrows=行;
LayoutRid=Layoutid;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
}
public int getCount(){
返回窗口;
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
ViewHolder=新的ViewHolder();
convertView=充气机。充气(_layoutId,null);
holder.Amount=(EditText)convertView.findViewById(R.id.sesdeccetdedamount);
holder.btnDel=(按钮)convertView.findViewById(R.id.btnMinus);
convertView.setTag(支架);
holder.Amount.setText(AmtValue==null?“:AmtValue);
holder.btnDel.setText(CodeValue==null?”:CodeValue);
holder.Amount.addTextChangedListener(新的TextWatcher(){
public void onTextChanged(字符序列、int start、int before、int count){
}
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
}
公共无效后文本已更改(可编辑){
投入金额(位置,s.toString());
}
});
holder.btnDel.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
//从父视图获取列表
ParentActivity.list.removeViewAt(位置);
notifyDataSetChanged();
}
});
返回视图;
}
静态类视窗夹{
编辑文本量;
按钮btnDel;
}
}试试这个

holder.delete.setOnClickListener(new OnClickListener() 

    {
        @Override
        public void onClick(View v) 
        {
            your_item.remove(position);//you can delete your item here

            notifyDataSetChanged();
        }
    });
notifyDataSetChanged用于刷新视图并更新数据。

试试这个

holder.delete.setOnClickListener(new OnClickListener() 

    {
        @Override
        public void onClick(View v) 
        {
            your_item.remove(position);//you can delete your item here

            notifyDataSetChanged();
        }
    });
myHolder.btn_delete.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
      // remove data from List and call 
      notifyDataSetChanged(); <-- will remove old data
    }
});
notifyDataSetChanged用于刷新视图并更新数据。

myHolder.btn\u delete.setOnClickListener(新的OnClickListener()
myHolder.btn_delete.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
      // remove data from List and call 
      notifyDataSetChanged(); <-- will remove old data
    }
});
{ @凌驾 公共void onClick(视图v) { //从列表中删除数据并调用 notifyDataSetChanged();
myHolder.btn_delete.setOnClickListener(新的OnClickListener())
{
@凌驾
公共void onClick(视图v)
{
//从列表中删除数据并调用

notifyDataSetChanged();只需尝试此代码

 btnOrImage.setOnClickListener(new OnClickListener() 
 {
    @Override
    public void onClick(View v) 
    {
        // delete query fire here whatever related to requirements.
        mList.remove(position);//you can delete your item here
        notifyDataSetChanged();
    }
});

此方法用于从BaseAdapter刷新到getView()方法。

只需尝试此代码

 btnOrImage.setOnClickListener(new OnClickListener() 
 {
    @Override
    public void onClick(View v) 
    {
        // delete query fire here whatever related to requirements.
        mList.remove(position);//you can delete your item here
        notifyDataSetChanged();
    }
});

此方法用于从BaseAdapter中刷新到getView()方法。

我试图将其从
Arraylist
中删除,但实际上我将其存储在
Hashmap
中。我必须将其从那里删除:
Hashmap.remove(位置)
解决了我的问题。

我试图从
Arraylist
中删除它,但实际上我将它存储在
Hashmap
中。我必须从那里删除它:
Hashmap.remove(position);
解决了我的问题。

如果你确实在使用
BaseAdapter
,你的
getCount()
方法返回什么?是我的getCount()方法返回列表中的noofrows。假设您是指某个集合中的“行数”,是否尝试删除该集合中的特定索引?@Niyati发布您的适配器代码,以便我们可以为您提供更多帮助。@Niyati您的问题是否已解决?如果您确实在使用
BaseAdapter
,您的
getCount()
method return?是,我的getCount()方法返回列表中的noofrows。假设您指的是“行数”在某些集合中,您是否尝试删除集合中的特定索引?@Niyati发布您的适配器代码,以便我们可以为您提供更多帮助。@Niyati您的问题是否已解决?使用也可用于arraylist和listview。BaseAdapter运行良好,您的应用程序的问题是什么?请一步一步地查看所有代码。我尝试过,但它给出了答案错误提示remove()不适用于listview。我尝试了这种解决方案(从适配器arraylist中删除数据,然后刷新)但不起作用。在此处打开了另一个问题:Use也可以用于arraylist和listview。对于BaseAdapter,Use工作正常,对于您的应用程序,什么问题只需一步一步地查看所有代码。我尝试了,但它给了我错误,即remove()不适用于listview。我尝试了这样的解决方案(正在从适配器arraylist中删除数据,然后刷新),但不起作用。在此处打开了另一个问题: