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 楼答案
没有显示任何内容,因为此函数
public static ArrayList<Contacto> generateContacts()
似乎返回null,即没有向listContactos添加任何项:因此,将函数更改为如下内容:
之后请暂时在main活动中注释掉这一行。如果你不发表评论,应用程序就会崩溃