各行に 2 つの画像があるリストビューがあり、クリックで画像を変更したいのですが、アイテムをクリックするたびにエラーが発生します。トーストを設定して、正しいアイテムをクリックしていることを確認し、それが機能することを確認します。しかし、最終的に私が本当に望んでいるのは、イメージが変わることです。正しい方法でセットアップする方法について何か提案はありますか?
07-08 15:19:43.371: E/AndroidRuntime(26277): FATAL EXCEPTION: main
07-08 15:19:43.371: E/AndroidRuntime(26277): java.lang.NullPointerException
07-08 15:19:43.371: E/AndroidRuntime(26277): at com.codalata.craigslistchecker.AutomationSettings$TheListAdapter2.onClick(AutomationSettings.java:217)
07-08 15:19:43.371: E/AndroidRuntime(26277): at android.view.View.performClick(View.java:2538)
07-08 15:19:43.371: E/AndroidRuntime(26277): at android.view.View$PerformClick.run(View.java:9158)
07-08 15:19:43.371: E/AndroidRuntime(26277): at android.os.Handler.handleCallback(Handler.java:587)
07-08 15:19:43.371: E/AndroidRuntime(26277): at android.os.Handler.dispatchMessage(Handler.java:92)
07-08 15:19:43.371: E/AndroidRuntime(26277): at android.os.Looper.loop(Looper.java:130)
07-08 15:19:43.371: E/AndroidRuntime(26277): at android.app.ActivityThread.main(ActivityThread.java:3704)
07-08 15:19:43.371: E/AndroidRuntime(26277): at java.lang.reflect.Method.invokeNative(Native Method)
07-08 15:19:43.371: E/AndroidRuntime(26277): at java.lang.reflect.Method.invoke(Method.java:507)
07-08 15:19:43.371: E/AndroidRuntime(26277): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
07-08 15:19:43.371: E/AndroidRuntime(26277): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-08 15:19:43.371: E/AndroidRuntime(26277): at dalvik.system.NativeStart.main(Native Method)
public class TheListAdapter2 extends ArrayAdapter<Auto_Info> implements
OnClickListener {
public TheListAdapter2() {
super(AutomationSettings.this, R.layout.automationitems, Info);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View Auto_View = convertView;
ImageHolder holder = null;
if (Auto_View == null) {
Auto_View = getLayoutInflater().inflate(
R.layout.automationitems, parent, false);
holder = new ImageHolder();
holder.item_auto_title = (TextView) Auto_View
.findViewById(R.id.item_auto_title);
holder.item_auto_image1 = (ImageView) Auto_View
.findViewById(R.id.item_auto_image1);
holder.item_auto_image2 = (ImageView) Auto_View
.findViewById(R.id.item_auto_image2);
holder.item_auto_image1.setTag(R.id.item_auto_image1, holder);
holder.item_auto_image2.setTag(R.id.item_auto_image2, holder);
Auto_View.setTag(holder);
} else {
holder = (ImageHolder) Auto_View.getTag();
}
Auto_View.setOnClickListener(this);
Auto_Info CurrentItem = Info.get(position);
holder.CurrentItem = CurrentItem;
Typeface TitleFont = Typeface.createFromAsset(getAssets(),
"providence.ttf");
holder.item_auto_title.setTypeface(TitleFont);
holder.item_auto_title.setText(CurrentItem.getAUTONAME());
holder.item_auto_image1.setOnClickListener(this);
holder.item_auto_image2.setOnClickListener(this);
return Auto_View;
}
@Override
public void onClick(View v) {
ImageHolder holder = (ImageHolder) v.getTag();
if (v.getTag() == v.getTag(R.id.item_auto_image1)) {
Toast t = Toast.makeText(AutomationSettings.this, "blah",
Toast.LENGTH_LONG);
holder.item_auto_image1.setBackgroundResource(R.drawable.bstoppedrunning);
t.show();
} else if (v.getTag() == v.getTag(R.id.item_auto_image2)) {
Toast t = Toast.makeText(AutomationSettings.this, "blah2",
Toast.LENGTH_LONG);
t.show();
}
}
static class ImageHolder {
public Auto_Info CurrentItem;
ImageView item_auto_image1;
ImageView item_auto_image2;
TextView item_auto_title;
}
}