Android ListView只有一项
我有一个ListView,它只显示一项而不是两项。 这是我的主要活动:Android ListView只有一项,android,listview,Android,Listview,我有一个ListView,它只显示一项而不是两项。 这是我的主要活动: public class MainActivity extends Activity { ImageView Add; ImageView Shadow; ProgressBar PB; ListView listView; String[] valuesUp = { "Lorem ipsum dolor sit amet, consectetur adipiscing elit", "Sed non ju
public class MainActivity extends Activity {
ImageView Add;
ImageView Shadow;
ProgressBar PB;
ListView listView;
String[] valuesUp = { "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"Sed non justo eros. Praesent a nisl dui" };
String[] valuesDown = { "Quisque ut ante eu arcu sagittis porta eu a dolor...",
"In orci augue facilisis eget fermentum consequat ac..." };
int[] imgValues = {R.drawable.mobileapp_16, R.drawable.mobileapp_19};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayAdapter<String> adapter = new MyAdapter(this, valuesUp, valuesDown, imgValues);
listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
公共类MainActivity扩展活动{
图像视图添加;
影像阴影;
ProgressBar-PB;
列表视图列表视图;
字符串[]valuesUp={“Lorem ipsum door sit amet,concertetur adipising elit”,
“非正义的爱欲,因酒后驾车而死亡”};
String[]valuesDown={“你的心在哪里,你的心在哪里…”,
“在orci augue facilisis eget Fentum consequat ac.”;
int[]imgValue={R.drawable.mobileapp_16,R.drawable.mobileapp_19};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayAdapter adapter=新的MyAdapter(this、valuesUp、valuesDown、imgValues);
listView=(listView)findViewById(R.id.listView1);
setAdapter(适配器);
}
这就是我的适配器:
public class MyAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] valuesUp;
private final String[] valuesDown;
private final int[] ImageValue;
private TextView textViewUp;
private TextView textViewDown;
private ImageView image;
public MyAdapter(Context context, String[] valuesUP, String[] valuesDown, int[] imageValue) {
super(context, R.layout.rowlayout, valuesUP);
this.context = context;
this.valuesUp = valuesUP;
this.valuesDown = valuesDown;
this.ImageValue = imageValue;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView;
rowView = inflater.inflate(R.layout.rowlayout, parent, false);
textViewUp = (TextView) rowView.findViewById(R.id.row_text_view_up);
textViewDown = (TextView) rowView.findViewById(R.id.row_text_view_down);
image = (ImageView) rowView.findViewById(R.id.image);
textViewUp.setText(valuesUp[position]);
textViewDown.setText(valuesDown[position]);
image.setImageDrawable(context.getResources().getDrawable(ImageValue[position]));
return rowView;
}}
公共类MyAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]valuesUp;
私有最终字符串[]值向下;
私有最终int[]图像值;
私有文本视图文本视图;
私有文本视图文本视图向下;
私有图像查看图像;
公共MyAdapter(上下文上下文,字符串[]值sup,字符串[]值down,int[]图像值){
super(上下文,R.layout.rowlayout,valuesUP);
this.context=上下文;
this.valuesUp=valuesUp;
this.valuesDown=valuesDown;
this.ImageValue=ImageValue;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图;
rowView=充气机。充气(R.layout.rowlayout,父级,false);
textViewUp=(TextView)rowView.findViewById(R.id.row\u text\u view\u up);
textViewDown=(TextView)rowView.findViewById(R.id.row\u text\u view\u down);
image=(ImageView)rowView.findviewbyd(R.id.image);
text view up.setText(valuesUp[position]);
textViewDown.setText(valuesDown[position]);
setImageDrawable(context.getResources().getDrawable(ImageValue[position]);
返回行视图;
}}
当我调试时,我看到getView被调用了很多次(大约12次),并且所有的时间“位置”都是0。这是为什么?
谢谢
我现在发现了我的问题!很奇怪。列表的高度看起来很奇怪。当我做“包装内容”或“匹配父项”时,它会给我一个项目,但当我输入400dp时,它就可以了。为什么?!
这就是我的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/topbar_bg" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/topbar_leftcircle" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/imageView2"
android:src="@drawable/topbar_logo" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="5dp"
android:scaleType="fitStart"
android:src="@drawable/topbar_menu" />
<ImageView
android:id="@+id/imageView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_alignParentTop="true"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@+id/imageView4"
android:src="@drawable/topbar_key" />
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_below="@+id/imageView1"
android:layout_centerHorizontal="true" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView1"
android:layout_centerHorizontal="true"
android:background="#00000000"
android:src="@drawable/mobileapp_14" />
<ImageView
android:id="@+id/imageView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageButton1"
android:layout_centerHorizontal="true"
android:scaleType="fitXY"
android:src="@drawable/transparent_bg" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/imageView6"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:maxLines="2"
android:text="Sed at vestibulum elit. Nunc quam erat, gravida ac consequat"
android:textColor="@color/RedText"
android:textSize="15dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageButton1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:maxLines="2"
android:text="Nullam sed erat erat, ut faucibus nunc. Etiam et mi di ante lacinia suscipit. Mauris gravida turpis eget lectus ullam..."
android:textColor="@color/WhiteText"
android:textSize="12dp" />
<ImageView
android:id="@+id/imageView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageButton1"
android:layout_centerHorizontal="true"
android:background="#00000000"
android:scaleType="centerCrop"
android:src="@drawable/mobileapp_15" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="600dp"
android:layout_below="@id/imageView7" >
</ListView>
</RelativeLayout>
</ScrollView>
像这样更改您的活动 公共类MainActivity扩展了活动{ 图像视图添加; 影像阴影; ProgressBar-PB
ListView listView;
String[] valuesUp = { "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"Sed non justo eros. Praesent a nisl dui" };
String[] valuesDown = { "Quisque ut ante eu arcu sagittis porta eu a dolor...",
"In orci augue facilisis eget fermentum consequat ac..." };
int[] imgValues = {R.drawable.mobileapp_16, R.drawable.mobileapp_19};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(new MyAdapter(this,valuesUp,valuesDown,imgValues));
}
像这样更换适配器
public class MyAdapter extends BaseAdapter {
private final Context context;
private final String[] valuesUp;
private final String[] valuesDown;
private final int[] ImageValue;
private TextView textViewUp;
private TextView textViewDown;
private ImageView image;
public MyAdapter(Context context, String[] valuesUP, String[] valuesDown, int[] imageValue) {
super(context, R.layout.rowlayout, valuesUP);
this.context = context;
this.valuesUp = valuesUP;
this.valuesDown = valuesDown;
this.ImageValue = imageValue;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView;
rowView = inflater.inflate(R.layout.rowlayout, parent, false);
textViewUp = (TextView) rowView.findViewById(R.id.row_text_view_up);
textViewDown = (TextView) rowView.findViewById(R.id.row_text_view_down);
image = (ImageView) rowView.findViewById(R.id.image);
textViewUp.setText(valuesUp[position]);
textViewDown.setText(valuesDown[position]);
image.setImageDrawable(context.getResources().getDrawable(ImageValue[position]));
return rowView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return valuesUp.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return valuesUp[arg0];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}}
像这样改变你的活动 公共类MainActivity扩展了活动{ 图像视图添加; 影像阴影; ProgressBar-PB
ListView listView;
String[] valuesUp = { "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"Sed non justo eros. Praesent a nisl dui" };
String[] valuesDown = { "Quisque ut ante eu arcu sagittis porta eu a dolor...",
"In orci augue facilisis eget fermentum consequat ac..." };
int[] imgValues = {R.drawable.mobileapp_16, R.drawable.mobileapp_19};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(new MyAdapter(this,valuesUp,valuesDown,imgValues));
}
像这样更换适配器
public class MyAdapter extends BaseAdapter {
private final Context context;
private final String[] valuesUp;
private final String[] valuesDown;
private final int[] ImageValue;
private TextView textViewUp;
private TextView textViewDown;
private ImageView image;
public MyAdapter(Context context, String[] valuesUP, String[] valuesDown, int[] imageValue) {
super(context, R.layout.rowlayout, valuesUP);
this.context = context;
this.valuesUp = valuesUP;
this.valuesDown = valuesDown;
this.ImageValue = imageValue;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView;
rowView = inflater.inflate(R.layout.rowlayout, parent, false);
textViewUp = (TextView) rowView.findViewById(R.id.row_text_view_up);
textViewDown = (TextView) rowView.findViewById(R.id.row_text_view_down);
image = (ImageView) rowView.findViewById(R.id.image);
textViewUp.setText(valuesUp[position]);
textViewDown.setText(valuesDown[position]);
image.setImageDrawable(context.getResources().getDrawable(ImageValue[position]));
return rowView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return valuesUp.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return valuesUp[arg0];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}}
您不应该将listView的高度保持为wrap_内容,因为这非常昂贵。 将其作为填充父项/匹配父项并进行尝试 提供wrap_内容将使系统执行大量操作来计算listView的高度。这将对位置0处的项进行多次调用
您不应该在scrollView中提供ListView。这是行不通的!您不应该将ListView的高度保留为wrap\u内容,因为这非常昂贵。 将其作为填充父项/匹配父项并进行尝试 提供wrap_内容将使系统执行大量操作来计算listView的高度。这将对位置0处的项进行多次调用 您不应该在scrollView中提供ListView。这永远不会起作用!@roiberg 您的代码在我的模拟器中运行良好。 检查您的XML代码 您的代码在我的模拟器中运行良好。
检查您的XML代码,我发现您有问题 您的问题在XML中
从xml中删除滚动视图。问题将得到解决。我发现了您的问题 您的问题在XML中 从xml中删除滚动视图。问题将得到解决。我找到了一个解决方法。 我将第一个图像放置在一个独立的布局中,并将此布局作为列表中的第一个单元格。 所以,现在我把图像和列表本身作为一个大的可滚动列表。 如果有人发现这个有什么大问题,我想听听。我找到了一个解决办法。 我将第一个图像放置在一个独立的布局中,并将此布局作为列表中的第一个单元格。 所以,现在我把图像和列表本身作为一个大的可滚动列表。
如果有人看到这个有什么大问题,我想听听。在我的例子中,问题是因为我使用的是NestedScrollView,所以解决方案是将android:fillViewport=“true”添加到我的NestedScrollView 这是我的代码:
<android.support.v4.widget.NestedScrollView
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v4.widget.NestedScrollView>
在我的例子中,问题是因为我使用的是NestedScrollView,所以解决方案是向我的NestedScrollView添加android:fillViewport=“true” 这是我的代码:
<android.support.v4.widget.NestedScrollView
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v4.widget.NestedScrollView>
您可以共享您的布局吗?这是一个很长的布局。其中有一个简单的列表项。您是否将列表视图的高度设置为wrapContent或match_parent?在此处发布您的xml并同时发布该行。xml您可以共享您的布局吗?这是一个很长的布局。其中有一个简单的列表项。您是否设置了列表视图的高度s wrapContent或match_parent?在此处发布您的xml并同时发布该行。XmlThank,但它仍然存在相同的问题…position始终为0,getItemId从未调用。您在其中获得两项了吗?什么?我在列表的最后仍然只有一项。您可以发布您的输出图像吗?它对我来说是如何工作的?谢谢,但它的我会做同样的问题…位置始终为0,getItemId从不为c