当我尝试将ArrayAdapter用于listview时,为什么我有问题?

时间:2017-07-02 21:54:15

标签: android listview adapter android-arrayadapter custom-adapter

我有这个!

主要活动:

public class Costo_Productos extends AppCompatActivity 


    Button agregar_articulo_btn;
    ArrayList<String> nombre_compra;
    ArrayList<Integer> cantidad_deseada;
    ArrayList<Integer> precio;
    ArrayList<Integer> total;

    ListView compras;

    lista_de_compras_adapter adapter;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_costo__productos);

        agregar_articulo_btn = (Button)findViewById(R.id.agregar_btn);

        compras = (ListView)findViewById(R.id.lista_de_compras);

        nombre_compra = new ArrayList<>();

        cantidad_deseada = new ArrayList<>();

        precio = new ArrayList<>();

        total = new ArrayList<>();

        adapter = new lista_de_compras_adapter(getApplicationContext(), R.layout.custom_lista_de_compras);

        compras.setAdapter(adapter);

        // usar bundle para recibir la informacion

        Intent intent = getIntent();
        Bundle extras = intent.getExtras();

        if (extras!=null){

            String nombre = extras.getString("Nombre");
            int precio_producto = extras.getInt("Precio");
            int cantidad = extras.getInt("Cantidad");
            int total_pagar = extras.getInt("Total");


            nombre_compra.add(nombre);
            cantidad_deseada.add(cantidad);
            precio.add(precio_producto);
            total.add(total_pagar);

//*******************// error start here

            int i=0;

           for (String Nombre_compra : nombre_compra){

               lista_de_compras_composicion object = new lista_de_compras_composicion(nombre_compra.get(i), cantidad_deseada.get(i), precio.get(i), total.get(i));
               adapter.add(object);
               i++;
           }

//****************// error finish here

            Toast.makeText(getApplicationContext(),""+nombre+" "+precio_producto+" "+cantidad+" "+total_pagar, Toast.LENGTH_LONG).show();
        }
    }

    public void buscar_articulos (View view){

        Intent lista_art = new Intent(this, lista_de_objetos.class);
        startActivity(lista_art);

    }

我获取信息的地方:

public class lista_de_cornisas_disponibles extends AppCompatActivity implements Response.Listener<String> {

    final String TAG = this .getClass().getSimpleName();
    ListView lista_cornisas_disponibles;

    int cornisa_seleccionada;
    int Precio_unidad;
    int cantidad_deseada;
    String Tipo;

    ArrayList<String> nombre_cornisa = new ArrayList<String>();
    ArrayList<Integer> disponibles = new ArrayList<Integer>();
    ArrayList<Integer> precio = new ArrayList<Integer>();
    FrameLayout frameLayout;
    LayoutInflater layoutInflater;
    PopupWindow popupWindow;

    TextView nombre_seleccionado;
    char bandera='f';


public void accion_al_seleccionar_cornisa(int cornisa_seleccionada, ArrayList<String> nombre_cornisa, ArrayList<Integer> disponibles){


    switch (cornisa_seleccionada){

        case 0:

            abrir_fragment();
            nombre_seleccionado.setText(nombre_cornisa.get(0));
            Toast.makeText(getApplicationContext(),"bandera = "+bandera, Toast.LENGTH_SHORT).show();
            Toast.makeText(getApplicationContext(),"seleccionada: "+nombre_cornisa.get(0)+""+disponibles.get(0)+""+precio.get(0),Toast.LENGTH_SHORT).show();break;

        case 1:

            abrir_fragment();
            nombre_seleccionado.setText(nombre_cornisa.get(1));
            Toast.makeText(getApplicationContext(),"seleccionada: "+nombre_cornisa.get(1)+""+disponibles.get(1),Toast.LENGTH_SHORT).show();break;

        case 2:

            abrir_fragment();
            nombre_seleccionado.setText(nombre_cornisa.get(2));
            Toast.makeText(getApplicationContext(),"seleccionada: "+nombre_cornisa.get(2)+""+disponibles.get(2),Toast.LENGTH_SHORT).show();break;

        case 3:

            abrir_fragment();
            nombre_seleccionado.setText(nombre_cornisa.get(3));
            Precio_unidad = 2000;
            Tipo = "Café Delgada";
            Toast.makeText(getApplicationContext(),"seleccionada: "+nombre_cornisa.get(3)+disponibles.get(3),Toast.LENGTH_SHORT).show();break;

    }
}


public void abrir_fragment(){

    bandera='f';

    layoutInflater = (LayoutInflater)getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
    ViewGroup container = (ViewGroup) layoutInflater.inflate(R.layout.fragment_custom_seleccionar_cantidad, null);
    popupWindow = new PopupWindow(container, 300, 500, true);
    popupWindow.setWidth(FrameLayout.LayoutParams.MATCH_PARENT);
    popupWindow.showAtLocation(frameLayout, Gravity.NO_GRAVITY, 400, 1300);
    final EditText editText = (EditText)container.findViewById(R.id.cantidad);
    Button aceptar = (Button)container.findViewById(R.id.boton_aceptar);

    nombre_seleccionado = (TextView)container.findViewById(R.id.nombre_seleccion);

    aceptar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (editText.getText().toString().isEmpty()){

                Toast.makeText(getApplicationContext(), "Por favor digite la cantidad que desea obtener!", Toast.LENGTH_LONG).show();
            }
            else {

                bandera = 'v';

                cantidad_deseada = Integer.parseInt(editText.getText().toString());

                Toast.makeText(getApplicationContext(), "" + cantidad_deseada, Toast.LENGTH_SHORT).show();

                Toast.makeText(getApplicationContext(), "Bandera = " + bandera, Toast.LENGTH_SHORT).show();

                aceptar_precionado();

            }
        }
    });

}


public void aceptar_precionado(){

    // cornisa_seleccionada es la posicion

    if (bandera=='v'){


        Intent intent = new Intent(getApplicationContext(), Costo_Productos.class);
        intent.putExtra("Nombre", nombre_cornisa.get(cornisa_seleccionada));
        intent.putExtra("Precio", precio.get(cornisa_seleccionada));
        intent.putExtra("Cantidad", cantidad_deseada);
        intent.putExtra("Total", (precio.get(cornisa_seleccionada) * cantidad_deseada));
        startActivity(intent);


    }
    }
}

行的组成

public class lista_de_compras_composicion {

    private String Nombre;
    private int Cantidad;
    private int Precio;
    private int Total;



    public lista_de_compras_composicion(String nombre, int cantidad, int precio, int total) {

        this.setNombre(nombre);
        this.setCantidad(cantidad);
        this.setPrecio(precio);
        this.setTotal(total);
    }

    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String nombre) {
        Nombre = nombre;
    }

    public int getCantidad() {
        return Cantidad;
    }

    public void setCantidad(int cantidad) {
        Cantidad = cantidad;
    }

    public int getPrecio() {
        return Precio;
    }

    public void setPrecio(int precio) {
        Precio = precio;
    }

    public int getTotal() {
        return Total;
    }

    public void setTotal(int total) {
        Total = total;
    }    
}

适配器类

public class lista_de_compras_adapter extends ArrayAdapter {

    private List list = new ArrayList();

    public lista_de_compras_adapter(Context context, int resource) {
        super(context, resource);
    }

    public void add(lista_de_compras_composicion object) {
        list.add(object);
        super.add(object);
    }


    static class ImgHolder{

        TextView Nombre;
        TextView Cantidad;
        TextView Precio;
        TextView Total;
    }


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

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

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

    View fila;
    fila = convertView;
    ImgHolder holder;

    if(convertView == null) {
        LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        fila = inflater.inflate(R.layout.custom_lista_de_compras, parent, false);
        holder = new ImgHolder();
        holder.Nombre = (TextView) fila.findViewById(R.id.nombre_del_producto);
        holder.Cantidad = (TextView) fila.findViewById(R.id.cantidad);
        holder.Precio = (TextView) fila.findViewById(R.id.precio);
        holder.Total = (TextView) fila.findViewById(R.id.precio_total_producto);
        fila.setTag(holder);

    }
    else {

        holder = (ImgHolder) fila.getTag();

    }

    lista_de_compras_composicion lista_comp = (lista_de_compras_composicion) getItem(position);
    holder.Nombre.setText(lista_comp.getNombre());
    holder.Cantidad.setText(lista_comp.getCantidad());
    holder.Precio.setText(lista_comp.getPrecio());
    holder.Total.setText(lista_comp.getTotal());
    return fila;
}
}

自定义列表的xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="60sp"
tools:context=".lista_de_tablillas_disponibles">


<TextView
    android:id="@+id/nombre_del_producto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="20dp"
    android:text="Nombre del producto"
    android:textSize="16sp" />

<TextView
    android:id="@+id/cantidad"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Cantidad"
    android:layout_marginRight="5sp"
    android:layout_alignBaseline="@+id/por"
    android:layout_alignBottom="@+id/por"
    android:layout_toLeftOf="@+id/por"
    android:layout_toStartOf="@+id/por" />


<TextView
    android:id="@+id/por"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=" x "
    android:layout_marginRight="5sp"
    android:layout_alignBaseline="@+id/precio"
    android:layout_alignBottom="@+id/precio"
    android:layout_toLeftOf="@+id/precio"
    android:layout_toStartOf="@+id/precio" />


<TextView
    android:id="@+id/precio"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="11dp"
    android:text="Precio" />



<TextView
    android:id="@+id/precio_total_producto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/nombre_del_producto"
    android:text="Precio total" />

和列表应该到的xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_light"
android:orientation="vertical"
tools:context="Costo_Productos">

<!-- TODO: Update blank fragment layout -->
<TextView
    android:layout_width="match_parent"
    android:layout_height="30sp"
    android:background="@color/colorAccent"
    android:gravity="fill_vertical"
    android:text="@string/articulos"
    android:textColor="@android:color/background_dark"
    android:textSize="16sp" />

<Button
    android:id="@+id/agregar_btn"
    android:layout_width="match_parent"
    android:layout_height="50sp"
    android:background="@android:color/background_light"
    android:drawableLeft="@mipmap/ic_launcher"
    android:gravity="fill"
    android:text="   Agregar articulo"
    android:onClick="buscar_articulos"/>

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

<TextView
    android:layout_width="match_parent"
    android:layout_height="30sp"
    android:background="@color/colorAccent"
    android:gravity="fill_vertical"
    android:text="Total:"
    android:textColor="@android:color/background_dark"
    android:textSize="16sp" />

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/total_parcial_txt"
        android:layout_width="90sp"
        android:layout_height="30sp"
        android:layout_alignLeft="@+id/flete_txt"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/flete_txt"
        android:layout_weight="1"
        android:gravity="fill"
        android:text="Total parcial: " />

    <TextView
        android:id="@+id/flete_txt"
        android:layout_width="90sp"
        android:layout_height="30sp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/total_parcial_txt"
        android:layout_marginLeft="11dp"
        android:layout_marginStart="11dp"
        android:layout_weight="1"
        android:gravity="fill"
        android:text="Flete: " />

    <TextView
        android:id="@+id/total_pagar_txt"
        android:layout_width="90sp"
        android:layout_height="30sp"
        android:layout_alignLeft="@+id/flete_txt"
        android:layout_alignStart="@+id/flete_txt"
        android:layout_below="@+id/flete_txt"
        android:layout_weight="1"
        android:gravity="fill"
        android:text="Total a pagar: " />

    <TextView
        android:id="@+id/total_parcial_resultado"
        android:layout_width="wrap_content"
        android:layout_height="30sp"
        android:layout_alignLeft="@+id/flete_resultado"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/flete_resultado"
        android:layout_weight="1"
        android:gravity="fill"
        android:text="colones " />

    <TextView
        android:id="@+id/flete_resultado"
        android:layout_width="wrap_content"
        android:layout_height="30sp"
        android:layout_alignLeft="@+id/total_pagar_resultado"
        android:layout_alignStart="@+id/total_pagar_resultado"
        android:layout_below="@+id/total_parcial_resultado"
        android:layout_weight="1"
        android:gravity="fill"
        android:text="colones " />

    <TextView
        android:id="@+id/total_pagar_resultado"
        android:layout_width="wrap_content"
        android:layout_height="30sp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/flete_resultado"
        android:layout_marginEnd="12dp"
        android:layout_marginRight="12dp"
        android:layout_weight="1"
        android:gravity="fill"
        android:text="colones " />
</RelativeLayout>

Android Monitor的结果

HostConnection::get() New Host Connection established 0x9c51ac00, tid 6159
07-03 19:52:18.036 5660-5660/com.example.juan.sdfnsdfnskdfnskdfmsfd 
W/ResourceType: No package identifier when getting value for resource number 
0x00000002
07-03 19:52:18.037 5660-5660/com.example.juan.sdfnsdfnskdfnskdfmsfd 
D/AndroidRuntime: Shutting down VM
07-03 19:52:18.050 5660-5660/com.example.juan.sdfnsdfnskdfnskdfmsfd 
E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example.juan.sdfnsdfnskdfnskdfmsfd, PID: 5660

android.content.res.Resources$NotFoundException: String resource ID #0x2

at android.content.res.Resources.getText(Resources.java:335)

at android.widget.TextView.setText(TextView.java:4555)

at 

com.example.juan.sdfnsdfnskdfnskdfmsfd.lista_de_compras_adapter
.getView(lista_de_compras_adapter.java:80)

at android.widget.AbsListView.obtainView(AbsListView.java:2363)

at android.widget.ListView.measureHeightOfChildren(ListView.java:1326)

at android.widget.ListView.onMeasure(ListView.java:1233)

at android.view.View.measure(View.java:19857)

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)

at 
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)

at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)

at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)

at android.view.View.measure(View.java:19857)

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)

at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)

at 

android.support.v7.widget.ContentFrameLayout.
onMeasure(ContentFrameLayout.java:139)

at android.view.View.measure(View.java:19857)

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)

at 

android.support.v7.widget.ActionBarOverlayLayout.
onMeasure(ActionBarOverlayLayout.java:393)

at android.view.View.measure(View.java:19857)

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)

at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)

at android.view.View.measure(View.java:19857)

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)

at 
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)

at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)

at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)

at android.view.View.measure(View.java:19857)

at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)

at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)

at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689)

at android.view.View.measure(View.java:19857)

at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275)

at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366)

at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619)

at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)

at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337)

at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)

at android.view.Choreographer.doCallbacks(Choreographer.java:686)

at android.view.Choreographer.doFrame(Choreographer.java:621)

at 
android.view.Choreographer$FrameDisplayEventReceiver.
run(Choreographer.java:860)

at android.os.Handler.handleCallback(Handler.java:751)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:154)

at android.app.ActivityThread.main(ActivityThread.java:6119)

at java.lang.reflect.Method.invoke(Native Method)

at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.
run(ZygoteInit.java:886)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
07-03 19:52:18.133 5660-5665/com.example.juan.sdfnsdfnskdfnskdfmsfd I/art: 
Do partial code cache collection, code=230KB, data=163KB
07-03 19:52:18.133 5660-5665/com.example.juan.sdfnsdfnskdfnskdfmsfd I/art: 
After code cache collection, code=225KB, data=160KB
07-03 19:52:18.133 5660-5665/com.example.juan.sdfnsdfnskdfnskdfmsfd I/art: 
Increasing code cache capacity to 1024KB

0 个答案:

没有答案