Android 具有Listview的活动不显示项目
我有一个活动“versolicitudespendentesactivity.java”,当我选择主菜单的一项时,它会被加载。 此活动包含一个listview,它不显示列表,但显示TextView。 这是一项活动:Android 具有Listview的活动不显示项目,android,android-layout,listview,android-listview,android-adapter,Android,Android Layout,Listview,Android Listview,Android Adapter,我有一个活动“versolicitudespendentesactivity.java”,当我选择主菜单的一项时,它会被加载。 此活动包含一个listview,它不显示列表,但显示TextView。 这是一项活动: public class VerSolicitudesPendientesActivity extends Activity { /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) *
public class VerSolicitudesPendientesActivity extends Activity {
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lista_solicitudes);
System.out.println("OncreateSolicitudes");
System.out.println("Contenido enlazado: Solicitudes.");
Bundle bundle= getIntent().getExtras();
System.out.println("Extras obtenidos");
String usuario= bundle.getString("usuario");
System.out.println("Usuario que revisa solicitudes: "+ usuario);
cargaSolicitudes(usuario);
System.out.println("Accediendo a solicitudes");
}
public void cargaSolicitudes(String usuario){
System.out.println("Llegamos a carga solicitudes.");
ListView lista= (ListView) findViewById(R.id.listaSolicitudes);
//System.out.println("Lista obtenida del xml.");
ArrayList<Solicitante> arraySolicitudes= new ArrayList<Solicitante>();
Solicitante solicitante;
//System.out.println("Antes de cargar solicitudes (Solicitantes)");
//Introduccion de datos en el array. Aqui es donde se deben cargar los datos de la BB.DD
solicitante= new Solicitante("Pablo","zz@zz",getResources().getDrawable(R.drawable.fotoamigo));
arraySolicitudes.add(solicitante);
//System.out.println("Solicitante 1 cargado "+ solicitante.nombreSolicitante);
solicitante= new Solicitante("Jon","zz@yy",getResources().getDrawable(R.drawable.fotoamigo2));
arraySolicitudes.add(solicitante);
//System.out.println("Solicitante 2 cargado "+ solicitante.nombreSolicitante);
System.out.println("Solicitudes cargadas en adapter");
// Creamos el adapter
SolicitudesAdapter adapter= new SolicitudesAdapter(this,arraySolicitudes,getBaseContext());
// Una vez hecha la conexión pasamos los datos.
lista.setAdapter(adapter);
}
public void aceptaSolicitud(View v){
Solicitante solicitante= (Solicitante) v.getTag();
Toast.makeText(getBaseContext(), "Solicitud de "+solicitante+" ha sido aceptada.", Toast.LENGTH_SHORT).show();
}
public void rechazaSolicitud(View v){
Solicitante solicitante= (Solicitante) v.getTag();
Toast.makeText(getBaseContext(), "Solicitud de "+solicitante+" ha sido rechazada.", Toast.LENGTH_SHORT).show();
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/pruebaTexto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prueba de que se carga el contenido de la actividad." />
<ListView
android:id="@+id/listaSolicitudes"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
tools:listitem="@layout/solicitudlist" >
</ListView>
public类与olicitudespendentesactivity扩展活动{
/*(非Javadoc)
*@see android.app.Activity#onCreate(android.os.Bundle)
*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.lista_征求意见书);
System.out.println(“onCreateRequestes”);
System.out.println(“康泰多·恩拉扎多:征求意见书”);
Bundle Bundle=getIntent().getExtras();
系统输出打印(Extras obtenidos);
String usuario=bundle.getString(“usuario”);
System.out.println(“Usuario que revisa征求意见书:“+Usuario”);
汽车加油站(usuario);
System.out.println(“委托书”);
}
公共无效汽车牌照(字符串usuario){
System.out.println(“Llegamos a carga征求意见书”);
ListView lista=(ListView)findViewById(R.id.Listasoliciences);
//println(“Lista obtenida del xml.”);
ArrayList arraySolicitudes=新的ArrayList();
请求者请求者;
//System.out.println(“cargar律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师事务所律师;
//介绍阵列中的数据。请参阅BB.DD中的数据
请求书=新请求书(“巴勃罗”zz@zz,getResources().getDrawable(R.drawable.fotoamigo));
数组集合。添加(请求);
//System.out.println(“请求1卡加多”+请求名称请求);
请求书=新请求书(“Jon”zz@yy,getResources().getDrawable(R.drawable.fotoamigo2));
数组集合。添加(请求);
//System.out.println(“请求2卡加多”+请求名称请求);
System.out.println(“征求意见书卡加达斯en适配器”);
//乳脂接合器
requestudesdapter adapter=新的requestudesdapter(this,arraySolicitudes,getBaseContext());
//在达托斯的帕萨莫斯国家公园。
setAdapter(适配器);
}
公共空间(视图五){
征求意见书征求意见书=(征求意见书)v.getTag();
Toast.makeText(getBaseContext(),“requestud de”+requestante+“ha sido aceptada.”,Toast.LENGTH_SHORT).show();
}
公共无效回收许可证(视图五){
征求意见书征求意见书=(征求意见书)v.getTag();
Toast.makeText(getBaseContext(),“requestud de”+requestante+“ha sido rechazada.”,Toast.LENGTH_SHORT).show();
}
}
这是我的自定义适配器:
public class SolicitudesAdapter extends BaseAdapter {
protected Activity activity;
protected ArrayList<Solicitante> solicitantes;
protected Context mContext;
public SolicitudesAdapter(Activity activity, ArrayList<Solicitante> solicitantes,Context context){
this.activity= activity;
this.solicitantes= solicitantes;
this.mContext=context;
}
public Context getmContext() {
return mContext;
}
public void setmContext(Context mContext) {
this.mContext = mContext;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@SuppressLint({ "ViewHolder", "InflateParams" })
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inf=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v= inf.inflate(R.layout.lista_solicitudes,null);
//Asociar el layout de la lista que hemos creado.
//Definimos un objeto a partir del array, vamos a cargar el contenido
//de ese objeto en el view de la lista.
System.out.println("Dentro del adapter");
Solicitante soli= solicitantes.get(position);
//Cargamos la fotografía del amigo.
ImageView foto= (ImageView)v.findViewById(R.id.imagenSolicitud);
foto.setImageDrawable(soli.getFoto());
System.out.println("Imagen botonAmigo cargada en la view");
//Cargamos el nombre del evento
TextView nombre= (TextView)v.findViewById(R.id.textoSolicitud);
String cadena =soli.getNombreSolicitante()+" quiere ser tu amigo.";
nombre.setText(cadena);
Button botonAcepta= (Button)v.findViewById(R.id.botonAceptaSolicitud);
botonAcepta.setTag(soli);
Button botonRechaza= (Button)v.findViewById(R.id.botonRechazaSolicitud);
botonRechaza.setTag(soli);
System.out.println("Hemos adaptado a "+ soli.nombreSolicitante);
return v;
}
公共类请求适配器扩展BaseAdapter{
受保护的活动;
受保护的ArrayList律师;
保护上下文mContext;
公共律师助理(活动、ArrayList律师、上下文){
这个。活动=活动;
这个。请求者=请求者;
this.mContext=上下文;
}
公共上下文getmContext(){
返回mContext;
}
公共void setmContext(上下文mContext){
this.mContext=mContext;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回0;
}
@SuppressLint({“视图持有者”、“充气参数”})
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater inf=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
视图v=inf.inflate(R.layout.lista_请求,空);
//这是一个非常有趣的故事。
//定义一个阵营,一个卡加·艾尔康尼多
//这是一个列表视图。
System.out.println(“Dentro del适配器”);
请求者soli=请求者get(位置);
//朋友之家。
ImageView foto=(ImageView)v.findviewbyd(R.id.imagenSolicitud);
setImageDrawable(soli.getFoto());
System.out.println(“视图中的botonAmigo cargada图像”);
//卡加莫斯酒店
TextView nombre=(TextView)v.findViewById(R.id.textoSolicitud);
字符串cadena=soli.getnombrelassectante()+“朋友们安静点。”;
命名为setText(cadena);
按钮botonAcepta=(按钮)v.findViewById(R.id.botonAceptaSolicitud);
botonAcepta.setTag(soli);
按钮botonRechaza=(按钮)v.findViewById(R.id.botonRechazaSolicitud);
botonRechaza.setTag(soli);
System.out.println(“Hemos Adaptiado a”+soli.Nombreante);
返回v;
}
这是包含listview和textview的xml,用于在活动中显示:
public class VerSolicitudesPendientesActivity extends Activity {
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lista_solicitudes);
System.out.println("OncreateSolicitudes");
System.out.println("Contenido enlazado: Solicitudes.");
Bundle bundle= getIntent().getExtras();
System.out.println("Extras obtenidos");
String usuario= bundle.getString("usuario");
System.out.println("Usuario que revisa solicitudes: "+ usuario);
cargaSolicitudes(usuario);
System.out.println("Accediendo a solicitudes");
}
public void cargaSolicitudes(String usuario){
System.out.println("Llegamos a carga solicitudes.");
ListView lista= (ListView) findViewById(R.id.listaSolicitudes);
//System.out.println("Lista obtenida del xml.");
ArrayList<Solicitante> arraySolicitudes= new ArrayList<Solicitante>();
Solicitante solicitante;
//System.out.println("Antes de cargar solicitudes (Solicitantes)");
//Introduccion de datos en el array. Aqui es donde se deben cargar los datos de la BB.DD
solicitante= new Solicitante("Pablo","zz@zz",getResources().getDrawable(R.drawable.fotoamigo));
arraySolicitudes.add(solicitante);
//System.out.println("Solicitante 1 cargado "+ solicitante.nombreSolicitante);
solicitante= new Solicitante("Jon","zz@yy",getResources().getDrawable(R.drawable.fotoamigo2));
arraySolicitudes.add(solicitante);
//System.out.println("Solicitante 2 cargado "+ solicitante.nombreSolicitante);
System.out.println("Solicitudes cargadas en adapter");
// Creamos el adapter
SolicitudesAdapter adapter= new SolicitudesAdapter(this,arraySolicitudes,getBaseContext());
// Una vez hecha la conexión pasamos los datos.
lista.setAdapter(adapter);
}
public void aceptaSolicitud(View v){
Solicitante solicitante= (Solicitante) v.getTag();
Toast.makeText(getBaseContext(), "Solicitud de "+solicitante+" ha sido aceptada.", Toast.LENGTH_SHORT).show();
}
public void rechazaSolicitud(View v){
Solicitante solicitante= (Solicitante) v.getTag();
Toast.makeText(getBaseContext(), "Solicitud de "+solicitante+" ha sido rechazada.", Toast.LENGTH_SHORT).show();
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/pruebaTexto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prueba de que se carga el contenido de la actividad." />
<ListView
android:id="@+id/listaSolicitudes"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
tools:listitem="@layout/solicitudlist" >
</ListView>
在这个xml文件的图形模式下,我可以在TextView下面正确地看到列表。
最后,这是列表中的项目
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/borde_naranja" >
<TextView
android:id="@+id/textoSolicitud"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="16dp"
android:layout_marginTop="15dp"
android:text="@string/fraseSolicitud" />
<ImageView
android:id="@+id/imagenSolicitud"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/textoSolicitud"
android:layout_marginLeft="15dp"
android:src="@drawable/fotoamigo" />
<Button
android:id="@+id/botonAceptaSolicitud"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textoSolicitud"
android:layout_centerHorizontal="true"
android:background="@drawable/borde_rellenonaranja"
android:onClick="aceptaSolicitud"
android:text="@string/aceptar"
android:textSize="12sp" />
<Button
android:id="@+id/botonRechazaSolicitud"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/botonAceptaSolicitud"
android:layout_alignBottom="@+id/botonAceptaSolicitud"
android:layout_alignRight="@+id/textoSolicitud"
android:layout_marginRight="16dp"
android:background="@drawable/borde_rellenonaranja"
android:onClick="rechazaSolicitud"
android:text="@string/rechazar"
android:textSize="12sp" />
我没有任何编译错误。当活动开始时,我可以看到textView,但没有看到listView。该程序已重新修订,但我不知道问题出在哪里。我希望在此处找到帮助。非常感谢。您在适配器中返回了错误的
ArrayList
计数。此计数用于呈现视图
在适配器中更改此选项
@Override
public int getCount() {
// TODO Auto-generated method stub
return solicitantes.size();
}
@Rohit5k2的答案是绝对正确的。为什么有人否决了这一点?!非常感谢!!这起作用了!。现在我遇到了另一个问题,在适配器内部,当我加载照片时,由于Null PointerException导致程序停止:foto.setImageDrawable(soli.getFoto());并且项目在活动中被正确地日化。我建议您将
requestante
类的签名更改为
,并使用此requestante=new requestante(“Jon”)zz@yy,R.drawable.fotoamigo2);
.Rest一切看起来都很好。再次感谢。问题是所有“set”都会出现空指针适配器的s。图像视图(照片),