如何通过相对于文本视图增加和减少按钮来设置每个项目的值

时间:2016-04-06 07:15:34

标签: android listview android-custom-view

`

  

custom_layout       

<ImageView
    android:id="@+id/addition"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher"
    android:layout_alignParentRight="true"
    android:paddingRight="15dp"
    android:gravity="center"
   />

<TextView
    android:id="@+id/qun"
    android:layout_width="33dp"
    android:layout_height="33dp"
    android:layout_alignParentRight="true"
    android:gravity="center"
    android:layout_marginRight="60dp"
    android:layout_marginTop="9dp"
    android:background="@drawable/quantity_box"
    />
<ImageView
    android:id="@+id/subtraction"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/sub"
    android:layout_alignParentRight="true"
    android:gravity="center"
    android:layout_marginRight="100dp"/>

`这是我得到的形象
这里是我们的代码+按钮增加和按钮减少我想得到但我无法得到除1项之外的所有项目的增加和减少...请帮助我,因为我已经尝试了所有的东西..谢谢你的建议和帮助

public class MainActivity extends AppCompatActivity {
    ///Description
    ImageView add, edit;
    Button ok;
    Button next2;
    ImageView addition, subtraction;
    TextView qun;
    int count = 0;
    final Context context = this;
    ListView listView;
    private ArrayAdapter<String> adapter;
    private ArrayList<String> arrayList;
    String strCounter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main_activity);

        //initialization
        add = (ImageView) findViewById(R.id.add);
        edit = (ImageView) findViewById(R.id.edit);
        listView = (ListView) findViewById(R.id.list);
        next2 = (Button) findViewById(R.id.next2);


        final String items[] = {"toned milk"};
        arrayList = new ArrayList<>(Arrays.asList(items));
        adapter = new ArrayAdapter<String>(this, R.layout.custom_layout, R.id.text, arrayList);
        listView.setAdapter(adapter);
        registerForContextMenu(listView);//to register the object of list view for context menu


        add.setOnClickListener(new View.OnClickListener()

        {
            @Override
            public void onClick(View v) {
                final Dialog dialog = new Dialog(MainActivity.this);
                dialog.setTitle("Enter new Milk");
                dialog.setContentView(R.layout.dialog);
                dialog.setCancelable(false);// to prevent the user when he click  any where in the screen
                dialog.setCanceledOnTouchOutside(false);
                dialog.show();


                //button initilazation
                Button ok = (Button) dialog.findViewById(R.id.ok);

                ok.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //initialization for edit text
                        final EditText editText = (EditText) dialog.findViewById(R.id.pro);
                        String data = editText.getText().toString();

                        arrayList.add(data);

                        Toast.makeText(getApplicationContext(), "product name is :" + data, Toast.LENGTH_LONG).show();

                        adapter.notifyDataSetChanged();// to   refresh with update one

                        dialog.cancel();


                    }
                });


                addition = (ImageView) findViewById(R.id.addition);
                subtraction = (ImageView) findViewById(R.id.subtraction);
                qun = (TextView) findViewById(R.id.qun);

                addition.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (v == addition) {
                            count++;
                            strCounter = Integer.toString(count);
                            qun.setText(strCounter);

                        }
                    }
                });


                subtraction.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (v==subtraction){
                            if (count>0)
                            count--;
                            strCounter =Integer.toString(count);
                            qun.setText(strCounter);
                        }

                    }
                });

            }
        });

1 个答案:

答案 0 :(得分:0)

您应该将OnClickListener设置为每个ListView项的+按钮和按钮。您可以通过覆盖ArrayAdapter的getView()方法并编写自己的实现来完成此操作。例如:

@Override
public View getView(int position, View convertView, ViewGroup parent){
    if(convertView == null){
        // inflate your view
    }else{
        addition = (ImageView) convertView.findViewById(R.id.addition);
        subtraction = (ImageView) convertView.findViewById(R.id.subtraction);
        qun = (TextView) convertView.findViewById(R.id.qun);
    }
}

请参阅此处的示例:Custom Adapter for List View