有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android应用程序上的java ListView实现错误

嗨,我正在开发一个Android应用程序,它使用列表视图来显示联系人列表

该应用程序的工作是显示另一个活动,其中包含一个按钮呼叫,另一个按钮发送邮件

我的问题是ListView没有显示在Main活动上。同学们,所以我猜r…a在他们的配置上犯了一些错误

AdapterContacto。阶级

public class AdapterContacto extends BaseAdapter {

    private ArrayList<Contacto> listaContatos;
    private Context contexto;

    public AdapterContacto(ArrayList<Contacto> listaContatos, Context contexto){
        this.listaContatos=listaContatos;
        this.contexto=contexto;
    }

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

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

    @Override
    public long getItemId(int position) {
        return listaContatos.get(position).getId();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // inflate the layout for each list row
        if (convertView == null) {
            convertView = LayoutInflater.from(contexto).
                    inflate(R.layout.item_contacto, parent, false);
        }

        // get current item to be displayed
        Contacto currentContact = (Contacto) getItem(position);

        // get the TextView for item name and item description
        TextView textViewItemName = (TextView)
                convertView.findViewById(R.id.txtItemContact);


        //sets the text for item name and item description from the current item object
        textViewItemName.setText(currentContact.getNombre());

        // returns the view for the current row
        return convertView;
    }
    private class ViewHolder {
        TextView nombre;

        public ViewHolder(View view){
            nombre = (TextView) view.findViewById(R.id.txtItemContact);
        }
    }
}


主要活动。阶级

public class MainActivity extends AppCompatActivity {

    private ListView listaNombres = null;
    private ArrayList<Contacto> contactos;
    private ArrayList<String> contactos_string;
    private AdapterContacto adapter;
    private SharedPreferences shared1;


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

        // Setup the data source
        contactos = Contacto.generateContacts();

        //Fill the phone data.

        fillPhones(contactos);

        //Leer sharedPreferences

        leerSharedPreferences();

         // calls function to get items list

// instantiate the custom list adapter
       adapter = new AdapterContacto(contactos, this);

// get the ListView and attach the adapter
        listaNombres  = (ListView) findViewById(R.id.itemListView);
        listaNombres.setAdapter(adapter);

        listaNombres.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                final int posicion=i;

                AlertDialog.Builder dialogo1 = new AlertDialog.Builder(MainActivity.this);
                dialogo1.setTitle("Importante");
                dialogo1.setMessage("¿ Elimina este teléfono ?");
                dialogo1.setCancelable(false);
                dialogo1.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialogo1, int id) {
                        String s=contactos_string.get(posicion);
                        StringTokenizer tok1=new StringTokenizer(s,":");
                        String nom=tok1.nextToken().trim();
                        SharedPreferences.Editor elemento=shared1.edit();
                        elemento.remove(nom);
                        elemento.commit();

                        contactos_string.remove(posicion);
                        adapter.notifyDataSetChanged();
                    }
                });
                dialogo1.setNegativeButton("Llamar", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialogo1, int id) {

                        Intent miIntent = new Intent(MainActivity.this, ContactDetails.class);

                        miIntent.putExtra("nombre", contactos.get(posicion).getNombre());
                        miIntent.putExtra("telefono", contactos.get(posicion).getTelefono());
                        miIntent.putExtra("email", contactos.get(posicion).getEmail());

                        startActivity(miIntent);
                        
                        
                        
                    }
                });
                dialogo1.show();

                return false;
            }
        });
    }

    private void fillPhones(ArrayList<Contacto> contactos) {

        for (int i=0; i<contactos.size(); i++){

            contactos_string.add(contactos.get(i).getTelefono());

        }
    }

    private void leerSharedPreferences() {

        shared1=getSharedPreferences("datostelefonos", Context.MODE_PRIVATE);
        Map<String,?> claves = shared1.getAll();
        for(Map.Entry<String,?> ele : claves.entrySet()){
            contactos_string.add(ele.getKey() +" : " +ele.getValue().toString());
        }

    }
}

联系人。阶级

public class Contacto {

    private String nombre;
    private String telefono;
    private String email;
    private int id;

    public Contacto(String nombre, String telefono, String email){
        this.nombre=nombre;
        this.telefono=telefono;
        this.email=email;
        id++;
    }

    public static ArrayList<Contacto> generateContacts() {

        ArrayList<Contacto>listContactos = new ArrayList<Contacto>();

        for (int i=0; i<listContactos.size(); i++){

            listContactos.add(new Contacto("Alvaro", "123456789", "alvaro@gmail.com"));
            listContactos.add(new Contacto("Thanos", "987654321", "thanos@gmail.com"));
            listContactos.add(new Contacto("Kirby", "135467589", "kirby@gmail.com"));
            listContactos.add(new Contacto("Dario", "875643287", "dario@gmail.com"));
            listContactos.add(new Contacto("Jose", "154638279", "jose@gmail.com"));
            listContactos.add(new Contacto("Alicia", "856382934", "alicia@gmail.com"));
            listContactos.add(new Contacto("Sergio", "875643287", "sergio@gmail.com"));
            listContactos.add(new Contacto("Laura", "154638279", "laura@gmail.com"));
            listContactos.add(new Contacto("Francisco", "856382934", "francisco@gmail.com"));


        }
        return listContactos;

    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

联系方式。阶级

public class Contacto {

    private String nombre;
    private String telefono;
    private String email;
    private int id;

    public Contacto(String nombre, String telefono, String email){
        this.nombre=nombre;
        this.telefono=telefono;
        this.email=email;
        id++;
    }

    public static ArrayList<Contacto> generateContacts() {

        ArrayList<Contacto>listContactos = new ArrayList<Contacto>();

        for (int i=0; i<listContactos.size(); i++){

            listContactos.add(new Contacto("Alvaro", "123456789", "alvaro@gmail.com"));
            listContactos.add(new Contacto("Thanos", "987654321", "thanos@gmail.com"));
            listContactos.add(new Contacto("Kirby", "135467589", "kirby@gmail.com"));
            listContactos.add(new Contacto("Dario", "875643287", "dario@gmail.com"));
            listContactos.add(new Contacto("Jose", "154638279", "jose@gmail.com"));
            listContactos.add(new Contacto("Alicia", "856382934", "alicia@gmail.com"));
            listContactos.add(new Contacto("Sergio", "875643287", "sergio@gmail.com"));
            listContactos.add(new Contacto("Laura", "154638279", "laura@gmail.com"));
            listContactos.add(new Contacto("Francisco", "856382934", "francisco@gmail.com"));


        }
        return listContactos;

    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

我希望你能帮忙,如果是这样的话,请提前感谢


共 (1) 个答案

  1. # 1 楼答案

    没有显示任何内容,因为此函数public static ArrayList<Contacto> generateContacts()似乎返回null,即没有向listContactos添加任何项:

    因此,将函数更改为如下内容:

    public static ArrayList<Contacto> generateContacts() {
        
        ArrayList<Contacto> listContactos=new ArrayList<Contacto>(){{
            add(new Contacto("Alvaro", "123456789", "alvaro@gmail.com"));
            add(new Contacto("Thanos", "987654321", "thanos@gmail.com"));
            add(new Contacto("Kirby", "135467589", "kirby@gmail.com"));
            add(new Contacto("Dario", "875643287", "dario@gmail.com"));
            add(new Contacto("Jose", "154638279", "jose@gmail.com"));
            add(new Contacto("Alicia", "856382934", "alicia@gmail.com"));
            add(new Contacto("Sergio", "875643287", "sergio@gmail.com"));
            add(new Contacto("Laura", "154638279", "laura@gmail.com"));
            add(new Contacto("Francisco", "856382934", "francisco@gmail.com"));
        }};
        
        return listContactos;
    
    }
    

    之后请暂时在main活动中注释掉这一行。如果你不发表评论,应用程序就会崩溃