Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListView应用程序速度令人沮丧,无法找出原因_Android_Listview - Fatal编程技术网

Android ListView应用程序速度令人沮丧,无法找出原因

Android ListView应用程序速度令人沮丧,无法找出原因,android,listview,Android,Listview,除了我看不到我的ListView应用程序的最后几个视图之外,一切似乎都很好(除了非常滞后)。我试图更改每个ListView项的自定义视图布局的高度,我意识到高度越小,看不到的视图就越多。这意味着在我的ListView底部有一个固定长度的高度,我无法滚动到它,我不知道为什么 来自MainActivity.java的代码 public class MainActivity extends AppCompatActivity { String[] titles; String[] d

除了我看不到我的ListView应用程序的最后几个视图之外,一切似乎都很好(除了非常滞后)。我试图更改每个ListView项的自定义视图布局的高度,我意识到高度越小,看不到的视图就越多。这意味着在我的ListView底部有一个固定长度的高度,我无法滚动到它,我不知道为什么

来自MainActivity.java的代码

public class MainActivity extends AppCompatActivity {

    String[] titles;
    String[] descriptions;
    int[] drawables = {R.drawable.number0, R.drawable.number2, R.drawable.number3, R.drawable.number4, R.drawable.number5, R.drawable.number6, R.drawable.number7, R.drawable.number8, R.drawable.number9, R.drawable.number10};

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

        Resources res = getResources();
        titles = res.getStringArray(R.array.title);
        descriptions = res.getStringArray(R.array.description);

        ListView l = (ListView) findViewById(R.id.listview);
        myadapter myadapter = new myadapter(this, titles, drawables, descriptions);
        l.setAdapter(myadapter);

    }
}
class myadapter extends ArrayAdapter<String>{
        Context c;
        int[] drawables;
        String[] titles;
        String[] descriptions;

    public myadapter(Context context, String[] titles, int[] drawables, String[] descriptions ) {
        super(context,R.layout.single_row, R.id.title,titles);
        c=context;
        this.drawables = drawables;
        this.titles = titles;
        this.descriptions = descriptions;
    }

    public View getView(int position,  View convertView,  ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater i = (LayoutInflater) c.getSystemService(c.LAYOUT_INFLATER_SERVICE);
            v = i.inflate(R.layout.single_row, parent, false);
        }
        ImageView image = (ImageView) v.findViewById(R.id.image);
        TextView title = (TextView) v.findViewById(R.id.title);
        TextView description = (TextView) v.findViewById(R.id.description);

        image.setImageResource(drawables[position]);
        title.setText(titles[position]);
        description.setText(descriptions[position]);

        return v;
    }
}
public类MainActivity扩展了AppCompatActivity{
字符串[]标题;
字符串[]描述;
int[]drawables={R.drawable.number0,R.drawable.number2,R.drawable.number3,R.drawable.number4,R.drawable.number5,R.drawable.number6,R.drawable.number7,R.drawable.number8,R.drawable.number9,R.drawable.number10};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res=getResources();
titles=res.getStringArray(R.array.title);
descriptions=res.getStringArray(R.array.description);
ListView l=(ListView)findViewById(R.id.ListView);
myadapter myadapter=新的myadapter(此、标题、绘图、说明);
l、 setAdapter(myadapter);
}
}
类myadapter扩展了ArrayAdapter{
上下文c;
int[]可抽出式;
字符串[]标题;
字符串[]描述;
公共myadapter(上下文上下文、字符串[]标题、int[]可绘图项、字符串[]说明){
超级(上下文、右布局、单行、右id、标题、标题);
c=上下文;
this.drawables=可提取项;
this.titles=标题;
this.descriptions=描述;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater i=(LayoutInflater)c.getSystemService(c.LAYOUT\u充气机\u服务);
v=i.充气(R.布局.单行,父,假);
}
ImageView图像=(ImageView)v.findViewById(R.id.image);
TextView title=(TextView)v.findViewById(R.id.title);
TextView description=(TextView)v.findViewById(R.id.description);
image.setImageResource(可绘图[位置]);
title.setText(头衔[职位]);
description.setText(说明[位置]);
返回v;
}
}
自定义布局xml文件中的代码:

<RelativeLayout 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:id="@+id/relative_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp">

    <ImageView
        android:id="@+id/image"
        android:layout_width="90dp"
        android:layout_height="90dp"
        app:srcCompat="@drawable/number0" />

    <TextView
        android:id="@+id/title"
        android:layout_width="332dp"
        android:layout_height="36dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_toEndOf="@+id/image"
        android:layout_toRightOf="@+id/image" />

    <TextView
        android:id="@+id/description"
        android:layout_width="320dp"
        android:layout_height="49dp"
        android:layout_below="@+id/title"
        android:layout_alignStart="@id/title"
        android:layout_alignLeft="@id/title"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_toEndOf="@+id/image"
        android:layout_toRightOf="@+id/image" />
</RelativeLayout>


activity_main.xml文件只包含一个列表视图。

视频教程使用png文件格式,他可能会使用较小的文件。您的列表视图可能很慢,因为需要花费时间来绘制这么多资源来显示它?你试过只显示文本吗


抱歉,这更像是一个评论,而不是一个答案,但我不能发表评论,直到我达到50次重复

好建议。我试图删除图像组件,现在我的应用程序非常顺利!我没想到绘制png文件会占用这么多资源。谢谢你的帮助!:)你知道我面临的另一个问题的原因吗?不知何故,我无法滚动到我的ListView的最底部。您能提供更多关于您如何无法滚动到底部的详细信息吗?ListView是否设置为与布局宽度和高度的父级匹配?我的ListView有10项。当我向下滚动时,我只能看到第9项的一半,而第10项没有。我一直在滚动,但它只是停在那里(好像它已经触底了)。我尝试更改listview中每个视图项目的高度,高度越小,未显示的项目越多。这意味着在我的ListView底部似乎有一个固定的空间没有显示出来。可能是系统错误地认为我的手机屏幕比实际屏幕长吗?谢谢你的帮助!!当你滚动时,你能看到所有显示的列表吗?i、 当你第一次启动应用程序时,是否有任何东西阻挡了你的列表?没有,没有任何东西阻挡了它。除了列表中的最后几项,我可以看到所有内容。哈哈,真奇怪。