クラスコンストラクターがあります。その中で、getResources を使用して文字列リソースを使用したいと考えています。アプリを実行しようとすると、「残念ながら myProject が停止しました」というエラーが表示されます。
public EhsanAdapter(Context c) {
context = c;
size = 5;
list = new ArrayList<SingleRow>();
Resources res = c.getResources();
}
これの何が問題なのですか?getresource コマンドで行をコメントすると、エラーは発生しません。
これはクラス全体です:
package com.example.listviewba;
import java.util.ArrayList;
import android.content.Context;
import android.content.res.Resources;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
class SingleRow{
String title;
String description;
int image;
public SingleRow(String title,String description,int image) {
this.title = title;
this.description=description;
this.image=image;
}
}
public class EhsanAdapter extends BaseAdapter{
Context context;
int size;
ArrayList<SingleRow> list;
public EhsanAdapter(Context c) {
context = c;
size = 5;
list = new ArrayList<SingleRow>();
Resources res = c.getResources();
}
@Override
public int getCount() {
return size;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
public void addView(){
size++;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RowView view = null;
if (convertView == null){
view = new RowView(this.context);
}
else{
view = (RowView) convertView;
}
view.setLeftText("Shit");
view.setRightText("Fuck");
return view;
}
}
これが私がクラスを呼び出す方法です:
package com.example.listviewba;
public class MainActivity extends Activity {
EhsanAdapter adapter = new EhsanAdapter(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView lv = (ListView) findViewById(R.id.listview1);
lv.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}