如何使用自定义列表适配器中的更新图像按钮更新数据库中的值?

时间:2014-08-12 03:14:17

标签: android sqlite android-listview

这是我的自定义列表适配器。我想使用列表中的更新ImageButton更新表中的值。单击它时,旧值应显示在新活动中,然后编辑的值必须存储在数据库中。但是,我无法在onClick()方法中传递一个intent。

请建议我一个解决方案

public class CustomListAdapter extends BaseAdapter implements ListAdapter 
     { 
      private ArrayList<String> list = new ArrayList<String>(); 
      private Context context; 
      OnItemSelectedListener onItemSelectedListener;
      public int pos;
      String pass,pass2,edit,epass;


public CustomListAdapter(List list, Context context) { 
    this.list = (ArrayList<String>) list; 
    this.context = context; 
} 


@Override
public int getCount() { 
    return list.size(); 
} 

@Override
public Object getItem(int pos) {
    //pass2 = list.toString();
    return list.get(pos); 
} 

//@Override
//public Long getItemId(int pos) { 
//    
//    //just return 0 if your list items do not have an Id variable.
//} 

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        view = inflater.inflate(R.layout.layout_custom_list, null);
    } 

    //Handle TextView and display string from your list
    final TextView listItemText = (TextView)view.findViewById(R.id.list_item_string); 
    listItemText.setText(list.get(position)); 






    //Handle buttons and add onClickListeners
    ImageButton deleteBtn = (ImageButton)view.findViewById(R.id.delete_btn);
    ImageButton editBtn = (ImageButton)view.findViewById(R.id.edit_btn);
    //Button addBtn = (Button)view.findViewById(R.id.add_btn);

    deleteBtn.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) { 
            //do something
            list.remove(position);
            pass = listItemText.getText().toString();

            notifyDataSetChanged();
            pass2 = pass.substring(0,pass.indexOf(' '));
            System.out.println(pass2);
            Moneydb.delete(pass2);
        }
    }); 
    editBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v2) {
            // TODO Auto-generated method stub
            edit=listItemText.getText().toString();
            epass = listItemText.getText().toString();
            edit = epass.substring(0,epass.indexOf(' '));
            Moneydb.edit(edit);

        }
    });


    return view; 
}

protected Context getContext() {
    // TODO Auto-generated method stub
    return null;
}


@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    //return list.get(position).getId();
    return 0;
}


public void clear() {
    //CustomListAdapter collection = null;
    // TODO Auto-generated method stub
    list.clear();
    notifyDataSetChanged();
}

1 个答案:

答案 0 :(得分:0)

我建议您使用两个ContextMenuMenuItemEdit为您的列表视图分配Delete,并在适配器之外编写相关代码

或者您可以通过以下方式启动活动:

Intent new_intent = new Intent(v.getRootView().getContext(),edit_activity.class);
new_intent.putExtra("Key","Value");
v.getRootView().getContext().startActivity(new_intent);

我认为第一种方法是最好的;)