これを設定して、オンラインファイルから TextView の可視性を変更できるようにしました。これは文字列に変換され、TextView の可視性を変更できるコードの一部を追加する場合を除いて、すべて正常に動作します。 . これが機能しない理由がわかりません。ここにlogcatがあります:
07-21 19:00:46.451 21334-21334/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.app.LazyAdapter.getView(LazyAdapter.java:68)
at android.widget.AbsListView.obtainView(AbsListView.java:2035)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
at android.widget.ListView.onMeasure(ListView.java:1155)
at android.view.View.measure(View.java:12723)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
at android.view.View.measure(View.java:12723)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at android.view.View.measure(View.java:12723)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1447)
at android.view.View.measure(View.java:12723)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at android.view.View.measure(View.java:12723)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
at android.view.View.measure(View.java:12723)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
at android.view.View.measure(View.java:12723)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4575)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
エラーの原因となっているアダプターのコードは次のとおりです。
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView date1 = (TextView)vi.findViewById(R.id.date1); // Release Date 1 (Usually US)
TextView date2 = (TextView)vi.findViewById(R.id.date2); // Release Date 2 (Usually Europe)
TextView date3 = (TextView)vi.findViewById(R.id.date3); // Release Date 3 (Usually Australia)
TextView platforms = (TextView)vi.findViewById(R.id.platforms); // duration
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
//This allows the Visibility of certain TextViews to be set via a string set by the online XML
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("visible", View.VISIBLE);
map.put("gone", View.GONE);
map.put("invisible", View.INVISIBLE);
// Setting all values in listview
title.setText(song.get(CustomizedListView.KEY_TITLE));
date1.setText(song.get(CustomizedListView.KEY_DATE1));
date2.setText(song.get(CustomizedListView.KEY_DATE2));
date3.setText(song.get(CustomizedListView.KEY_DATE3));
date2.setVisibility(map.get(song.get(CustomizedListView.KEY_DATE2VIS))); //This sets visibility via the KEY_DATE2VIS String using one of the terms in the Hashmap above
date3.setVisibility(map.get(song.get(CustomizedListView.KEY_DATE3VIS)));
platforms.setText(song.get(CustomizedListView.KEY_PLATFORMS));
imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
return vi;
}
}
LazyAdapter.class の 68 行目は次のとおりです。
date2.setVisibility(map.get(song.get(CustomizedListView.KEY_DATE2VIS)));
誰かが私の問題を解決するのを手伝ってくれたら、私はとても幸せです. 読んでくれてありがとう。その他のファイルが必要な場合は、お気軽にお問い合わせください。
修正: 文字列名をめちゃくちゃにしてしまったので、信じられないほどばかげたエラーでした。