私はそれに習慣のある習慣を持ってDialogFragment
いView
ます。それView
にはListView
intがあります。ボタンを押した後、またはイベントがトリガーされたときにすぐに表示したい。最初に呼び出さView
れたときにのみ、表示に数秒 (1 ~ 2 秒) かかります。次に表示される必要がある場合は、すぐに表示されます。遅延がある場合は、約 100 ~ 200 ミリ秒しかかかりません。
呼び出されるたびに の新しいインスタンスを作成して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
}
}
は次のAdapter
とおりです。
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;
}
}