gpt4 book ai didi

安卓 : Displaying ListView takes few seconds to display on first attempt

转载 作者:行者123 更新时间:2023-11-29 21:43:41 24 4
gpt4 key购买 nike

我有一个自定义的 DialogFragment,里面有一个自定义的 ViewView 有一个 ListView int。我想在按下按钮或触发事件后立即显示它。该 View 仅在第一次调用时需要几秒钟才能显示,1 到 2 秒。下次它必须出现,它立即出现,或者如果有延迟大约只需要100-200ms。

每次调用时我都会创建 View 的新实例,所以我认为它也应该需要几秒钟才能显示。

有什么解决办法吗?谢谢!

示例代码:

CustomDialogFragment dialog = new CustomDialogFragment();
dialog.show(getSupportFragmentManager(), "a_tag");

这是对话框:

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class CustomDialogFragment extends DialogFragment implements OnItemClickListener {

private ListView mListView;
private CustomAdapter mAdapter;
private ArrayList<Object> mData;


public CustomDialogFragment() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.custom_dialog_fragment, container);
return view;
}

@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
mListView = (ListView) getView().findViewById(R.id.lst);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(this);
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mData = new ArrayList<Object>();
mAdapter = new CustomAdapter(getActivity(), mData);
}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO : Do something here
}
}

这是适配器:

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<Object> data;

private static LayoutInflater inflater;

public CustomAdapter(Activity a, ArrayList<Object> d) {
this.activity = a;
this.data = d;
inflater = ((LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
}

@Override
public int getCount() {
return this.data.size();
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (convertView == null) {
v = inflater.inflate(R.layout.table_row, null);
}
// TODO : Edit some UI here
return v;
}
}

最佳答案

ListView 可能需要一些时间来加载。您的 ListView 中可能有大量带有图像等的自定义 View ,或者它可能有很多元素。

您应该配置和分析您的列表适配器,以查看到底是什么导致了速度变慢。

然后您可以尝试通过在 Activity 启动之前预加载 View 或其他类似技术来优化它。

它仅在第一次加载时发生的事实表明正在创建列表项。一旦它们被生成并在内存中,显示列表将会更快。

关于安卓 : Displaying ListView takes few seconds to display on first attempt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16435278/

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