[英]ListView doesn't appear in the application
我是android開發的初學者,所以讓我輕松一點:3
我創建了一個自定義listView並將一些值傳遞給它,但是當我運行該應用程序時,什么都沒有出現
但是當我將它與textView一起放置時,會出現文本視圖,但列表視圖不會出現:/
並且代碼沒有顯示任何錯誤!
這是我的MainActivity.java
ArrayList<Item> customList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
customList=new ArrayList<Item>();
for (int i=0; i<pics.length;i++){
ImageView pic= new ImageView(this);
pic.setImageResource(pics[i]);
Item item= new Item(null,names[i],desc[i],times[i]);
customList.add(item);
}
ListView lv = (ListView) findViewById(R.id.listview);
CustomAdapter myAdapter = new CustomAdapter(customList);
lv.setAdapter(myAdapter);
}
class CustomAdapter extends BaseAdapter{
ArrayList<Item> myList;
public CustomAdapter(ArrayList<Item> list) {
this.myList=list;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater infalter= getLayoutInflater();
View view = infalter.inflate(R.layout.custom_row,null);
ImageView image=(ImageView) findViewById(R.id.image);
TextView name=(TextView) findViewById(R.id.title);
TextView message=(TextView) findViewById(R.id.desc);
TextView time=(TextView) findViewById(R.id.time);
image=myList.get(position).getPic();
name.setText(myList.get(position).getName());
message.setText(myList.get(position).getMessage());
time.setText(myList.get(position).getTime());
return view;
}
}
}
這是我的XML文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.hp.myapplication.MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listview"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp"/>
更改您的getCount()以返回列表list.getSize()中的項目數。 您的getcount為0。
這應該使您開始以正確的方式執行列表視圖。
我認為您的問題就在這里。
for (int i=0; i<pics.length;i++){
ImageView pic= new ImageView(this);
pic.setImageResource(pics[i]);
Item item= new Item(null,names[i],desc[i],times[i]);
customList.add(item);
}
您不想在此處添加imageview ... Imageview將屬於自定義布局。 如果您在新項目中看到以下代碼,我想您會更詳細地理解它
我的主要活動
ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.listview);
List<Model> list = new ArrayList<>();
list.add(new Model("top-one", "bot-one"));
list.add(new Model("top-two", "bot-two"));
list.add(new Model("top-three", "bot-three"));
list.add(new Model("top-four", "bot-four"));
list.add(new Model("top-five", "bot-five"));
list.add(new Model("top-six", "bot-six"));
list.add(new Model("top-seven", "bot-seven"));
list.add(new Model("top-eight", "bot-eight"));
ListAdapter adapter = new ListAdapter(listview.getContext(), list);
listview.setAdapter(adapter);
}
主要活動XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.fuhnatik.customlistview.MainActivity">
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
存儲數據的模型
public class Model {
String top, bottom;
public Model(String top, String bottom) {
this.top = top;
this.bottom = bottom;
}
public String getTop() {
return top;
}
public void setTop(String top) {
this.top = top;
}
public String getBottom() {
return bottom;
}
public void setBottom(String bottom) {
this.bottom = bottom;
}
}
單項
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip"
android:orientation="vertical">
<TextView
android:id="@+id/top"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="TOP SECTION HERE"
android:textSize="16sp" />
<TextView
android:id="@+id/bottom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="BOTTOM SECTION HERE"
android:textSize="12sp" />
</LinearLayout>
適配器
public class ListAdapter extends ArrayAdapter<Model> {
private Context activityContext;
private List<Model> list;
public static final String TAG = "ListView";
public ListAdapter(Context context, List<Model> list){
super(context, R.layout.single_listview, list);
this.activityContext = context;
this.list = list;
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup){
final ViewHolder viewHolder;
if (view == null) {
view = LayoutInflater.from(activityContext).inflate(R.layout.single_listview, null);
viewHolder = new ViewHolder();
viewHolder.top = (TextView) view.findViewById(R.id.top);
viewHolder.bottom = (TextView) view.findViewById(R.id.bottom);
viewHolder.top.setText(list.get(position).getTop());
viewHolder.bottom.setText(list.get(position).getBottom());
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
return view;
}
private static class ViewHolder {
TextView top;
TextView bottom;
}
}
在代碼中進行以下更改:
@Override
public Object getItem(int position) {
return myList.get(position);
}
@Override
public int getCount() {
return myList.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater infalter= getLayoutInflater();
View view = infalter.inflate(R.layout.custom_row,null);
ImageView image=(ImageView) view.findViewById(R.id.image);
TextView name=(TextView) view.findViewById(R.id.title);
TextView message=(TextView) view.findViewById(R.id.desc);
TextView time=(TextView) view.findViewById(R.id.time);
image=myList.get(position).getPic();
name.setText(myList.get(position).getName());
message.setText(myList.get(position).getMessage());
time.setText(myList.get(position).getTime());
return view;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.