私のアプリケーションは最初のランチに6.5MBを使用しています.3つのタブを持つアクティビティを入力すると、リストビューを表示するタブで14MBが使用されます!!カスタムアダプターを使用すると、さらにRAMが使用されますか?
これは、SimpleAdapterを使用して「不良コード」からカスタムアダプターに移動したときに発生しました。
私が望むのは、リストビューの両側に2つの文字列です。文字列は、ここでは、配列内にある、私は人々が行うには間違った方法である私に言ったことを利用した方法です。
String[] array= getResources().getStringArray(R.array.Names_List);
int lengthtmp= array.length;
for(int i=0;i<lengthtmp;i++)
{
counter++;
AddToList(array[i]);
}
adapter = new SimpleAdapter(this,list,R.layout.start_row,new String[] {"number","suraname"},new int[] {R.id.Start_Numbering,R.id.Start_Name});
private void AddToList(String name) {
HashMap<String,String> temp = new HashMap<String,String>();
temp.put("number", Integer.toString(SortingPictures[counter-1]));
temp.put("suraname", name);
list.add(temp);
}
このコードでは、活動は、ラムの10メガバイトを取ります。カスタムアダプタを使用するようにコードを変更した後、カスタムアダプタを使用すると、なぜそれほど多くのRAMを使用するのか教えてください。このカスタムアダプターに問題がありますか?
EDIT1:私はこのラインでExceptionNullPointerを得る
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
convertView = mInflater.inflate(R.layout.start_row, parent,false);
holder=new ViewHolder();
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_PageNumber = (TextView)convertView.findViewById(R.id.Start_Numbering);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv_SuraName.setText(SuraNames[position]);
holder.tv_PageNumber.setText(Integer.toString(PageNumber[position]));
return convertView;
}
:これは1つがdziobasによって提案されたより良いコードです」convertView = mInflater.inflate(R.layout.start_row、親、偽); "なぜですか?
+1私はこれに似たような答えを書いていました。前述のようにビューを作成し、convertViewを使用します。 [2009年のこのプレゼンテーション](http://www.google.com/events/io/2009/sessions/TurboChargeUiAndroidFast.html)も参照してください。ビューがリサイクルされる方法についての良い視覚的な説明もあります[ここ](http://android.amberfog.com/?p=296)。 –
Edit1を読んでください。プログラムで作成するよりもxmlから膨らませるのが良いですか? – Omar