gpt4 book ai didi

Android 自定义适配器和 ListView 什么都不显示

转载 作者:行者123 更新时间:2023-11-29 21:04:20 25 4
gpt4 key购买 nike

我想创建一个由我自己的布局和数据填充的 ListView。所以我查看了示例,发现我需要扩展 ArrayAdapter<>。所以我制作了一个 CustomAdapter 并按照示例完成了所有操作。

代码没有错误,但是 ListView @id/dashboard 没有出现在我的 MainActivity 中。我可以从 activity_main.xml 中看到 TextView,但看不到 ListView。DrawerLayout 的滑动菜单也可以正常工作。

我在我的 CustomAdapter 中扩充了 overview.xml。

你能告诉我为什么它不起作用吗?我为此工作了几个小时。

谢谢

自定义适配器

public class CustomAdapter extends ArrayAdapter<Ssoverview> {

private int layoutId;
private Context context;
private ArrayList<Ssoverview> list;

public CustomAdapter(Context context, int resource, ArrayList<Ssoverview> ssList) {
super(context, resource);
this.layoutId = resource;
this.context = context;
this.list = ssList;
}

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

if (v == null) {
v = (RelativeLayout) ((Activity)context).getLayoutInflater().inflate(this.layoutId, null); //, parent, false);
}

Ssoverview ss = this.list.get(position);
if (ss != null) {
TextView titleTV=(TextView) v.findViewById(R.id.title);
titleTV.setText(ss.getTitle());
TextView authorTV=(TextView) v.findViewById(R.id.author);
authorTV.setText(ss.getAuthor());
}
Log.d("Deb", "Fabrication de la View : "+position);
return v;
}

}

activity_main.xml :

 <android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ole" />
<ListView
android:id="@+id/dashboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
</FrameLayout>

<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

概览.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/grey"
android:layout_marginTop="10sp"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Titre" />

<TextView
android:id="@+id/note"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:text="Note : x/5 y votes" />

<TextView
android:id="@+id/author"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="35dp"
android:text="John Doe" />
</RelativeLayout>

还有我设置适配器的 MainActity

public class MainActivity extends Activity {

private ListView lv;

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

lv = (ListView) findViewById(R.id.dashboard);

//Declaration factices des Ssoverview
ArrayList<Ssoverview> ssList = new ArrayList<Ssoverview>();
Ssoverview ss1 = new Ssoverview("Dune", "David", "4");
Ssoverview ss2 = new Ssoverview("Le petit poucet", "MLP", "2");
Ssoverview ss3 = new Ssoverview("Locked", "Hervé", "4,2");

ssList.add(ss1);
ssList.add(ss2);
ssList.add(ss3);

Log.d("D", ssList.get(0).getTitle());

//Declaration de l'adapter avec le layout et la ssList
CustomAdapter adapter = new CustomAdapter(this, R.layout.overview, ssList);


lv.setAdapter(adapter);

Log.d("D","Fin de onCreate");
}

}

最佳答案

改变

public CustomAdapter(Context context, int resource, ArrayList<Ssoverview> ssList) {
super(context, resource);
this.layoutId = resource;
this.context = context;
this.list = ssList;
}

public CustomAdapter(Context context, int resource, ArrayList<Ssoverview> ssList) {
super(context, resource , ssList); <-- change this line
this.layoutId = resource;
this.context = context;
this.list = ssList;
}

在构造函数中的 arrayAdapter 类 super 中处理列表的大小,因为您不传递数据,默认情况下此设置为 0,因此根本不会调用 getView

关于Android 自定义适配器和 ListView 什么都不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com