0

I tried to fill Custom ListView with data from SQLite. When I tried to scroll my ListView, the value of EditText ​in each row of the ListView back to default.

I am new to java and android, please help me.

First


TextView [0]


TextView [0]


TextView [0]


When I Insert / Before Scroll


TextView [1]


TextView [3]


TextView [2]


After Scroll


TextView [0]


TextView [0]


TextView [0]


This is my Adapter

public class MenuListAdapter extends BaseAdapter {

    Context context;

    ArrayList<Menu12> menuList;
    public MenuListAdapter(Context context, ArrayList<Menu12> list) {
        this.context = context;
        menuList = list;
    }

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

    @Override
    public Object getItem(int position) {
        return menuList.get(position);
    }

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

    class ViewHolder {
        EditText editText;
        ImageButton add;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        final Menu12 menu12 = menuList.get(position);

        final ViewHolder holder;

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_row, null);

            holder = new ViewHolder();
            holder.editText = (EditText) convertView.findViewById(R.id.value);
            convertView.setTag(holder);

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

        final TextView Id = (TextView)convertView.findViewById(R.id.id); //id
        final TextView KdMenu = (TextView)convertView.findViewById(R.id.description); //KdMenu
        final TextView NmMenu = (TextView)convertView.findViewById(R.id.title); //NmMenu
        final TextView Harga = (TextView)convertView.findViewById(R.id.price); //Harga        
        final TextView KdCat = (TextView)convertView.findViewById(R.id.latitude); //KdCat
        final TextView SngktMenu = (TextView)convertView.findViewById(R.id.longitude); //SngktMenu 
        final TextView Aktif = (TextView)convertView.findViewById(R.id.aktif); //Aktif
        final TextView SoldOut = (TextView)convertView.findViewById(R.id.mart); //SoldOut
        final TextView noPrinter = (TextView)convertView.findViewById(R.id.noprint); //noPrinter

        TextView link_img = (TextView)convertView.findViewById(R.id.link_img);
        ImageView thumb_image =(ImageView)convertView.findViewById(R.id.img);

        Id.setText(String.valueOf(menu12.getID()));
        KdMenu.setText(menu12.getKDMENU());
        NmMenu.setText(menu12.getNMMENU());
        Harga.setText(menu12.getHARGA());
        KdCat.setText(menu12.getKDCAT());
        SngktMenu.setText(menu12.getSNGKTMENU());
        Aktif.setText(menu12.getAKTIF());
        SoldOut.setText(menu12.getSOLDOUT());
        noPrinter.setText(menu12.getNOPRINTER());
        holder.editText.setText(menu12.getJUMLAH());

        link_img.setText(menu12.getSOLDOUT());
        String img = link_img.getText().toString();

        if (img.toLowerCase().equals("t")){
            thumb_image.setImageResource(R.drawable.tidak_aktif);
        }else if(img.toLowerCase().equals("f")){
            thumb_image.setImageResource(R.drawable.aktif);
        }

        holder.editText.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) { 
                if(holder.editText.getText().toString().equals("")||holder.editText.getText().toString().equals("0")){
                }else{
                    MenuHandler db = new MenuHandler(context);
                    SQLiteDatabase dbsql = db.getWritableDatabase();
                    ContentValues values = new ContentValues();
                    values.put("jumlah", holder.editText.getText().toString());
                    dbsql.update("tb_menu", values, "id" + "= ?", new String[] {Id.getText().toString()});
                    dbsql.close();
                    db.close();
                }
            }

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

            @Override
            public void afterTextChanged(Editable s) { 
            }

        });

        return convertView;
    }

}
Josh Crozier
  • 233,099
  • 56
  • 391
  • 304

0 Answers0