私はカスタムリストview.firstを使用したい、私は2つの変数(名前、画像)とメインリスト名前のJavaクラスを作成します。 このクラスコード:nullPointerExceptionは、カスタムリストビューマネージャを呼び出すとき
public class ListManager extends BaseAdapter {
private Context context;
private ArrayList<MainList> list;
private LayoutInflater inflater;
public ListManager(Context context, ArrayList<MainList> list) {
this.setContext(context);
this.setList(list);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
try {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
viewHolder viewHolder = new viewHolder();
if(view == null){
inflater.inflate(R.layout.list,null);
viewHolder.name = (TextView) view.findViewById(R.id.listTitle);
viewHolder.image = (ImageView) view.findViewById(R.id.listImage);
}else viewHolder = (viewHolder) view.getTag();
if (list.size() > 0){
MainList mainList = list.get(i);
viewHolder.name.setText(mainList.getName());
}
}catch (Exception e){
Log.i("Tag:LM", "getView: " + e.toString());
}
return view;
}
public Context getContext() {
return context;
}
public void setContext(Context context) {
this.context = context;
}
public ArrayList<MainList> getList() {
return list;
}
public void setList(ArrayList<MainList> list) {
this.list = list;
}
private static class viewHolder{
private TextView name;
private ImageView image;
}
}
私はちょうどテスト私のコードのためのTextViewを設定*:
public class MainList {
private String name;
private String image;
public MainList(String name, String image) {
this.setName(name);
this.setImage(image);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
それから私は、ListManagerのクラスはBaseAdapter、このクラスのコードを拡張して作成します。後に、このクラスを作成し、リストの活動に使用し、このクラスコード:
public class ListActivity extends AppCompatActivity {
private ListView listView;
private ListManager adapter;
private ArrayList<MainList> arrayList;
private static final String TAG = "Tag:ListActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
try {
listView = (ListView) findViewById(R.id.list);
setData();
adapter = new ListManager(this, arrayList);
listView.setAdapter(adapter);
}catch (Exception e){
Log.i(TAG, "onCreate: "+e.toString());
}
}
private void setData(){
MainList mainList = new MainList("all","khddai");
MainList mainList1 = new MainList("sf","khddai");
MainList mainList2 = new MainList("adfdli","khdfai");
MainList mainList3 = new MainList("aldi","khdfai");
arrayList.add(mainList);
arrayList.add(mainList1);
arrayList.add(mainList2);
arrayList.add(mainList3);
}
}
アンドロイドログ猫: 7月20日14:53:15.240 9861から9861/com.package.app I /タグ:ListActivity:のonCreate :java.lang.NullPointerException
残りのスタックトレースをポストすると、私は推測し、listViewが見つからないと言うでしょう。あなたはandroid.R.id.listから探している可能性があります。一般的な間違いです。 –
'inflater.inflate(R.layout.list、null);'あなたは 'row_layout'を膨らませ、そのオブジェクトを使ってビュー。 –
と変更しようとしました。 'view == null){ view = inflater.inflate(R.layout.list、null);' –