简体   繁体   English

在ListView中的TextView旁边显示ImageView

[英]Showing ImageView next to TextView in a ListView

So I have a listview that is displaying correctly. 所以我有一个正确显示的列表视图。 When the item is "turned on" the text is white and when it's turned off it's grey. 当该项目“打开”时,文本为白色,而关闭时则为灰色。 That part all functions great. 那部分功能很好。 However when I add the ImageView into the mix I get a null pointer exception. 但是,当我将ImageView添加到混合中时,会出现空指针异常。 I don't understand why. 我不明白为什么。 I've tried using bitmaps as well and get the same problem. 我也尝试过使用位图,并得到相同的问题。

Here is some code: 这是一些代码:

@Override
public void bindView(View view, Context context, Cursor cursor) {

    TextView rRule = (TextView) view.findViewById(R.id.rule_text);
    TextView rType = (TextView) view.findViewById(R.id.rule_type);
    ImageView iChecked = (ImageView) view.findViewById(R.id.checkBox);



    String ruleName = cursor.getString(1);
    int ruleType = cursor.getInt(2);
    String ruleEnabled = cursor.getString(3);

    switch (ruleType) {
    /*...some irrelevant code */

    }

    if (ruleEnabled.equals("true")) {
        rRule.setTypeface(null, Typeface.BOLD);
        rRule.setTextColor(Color.WHITE);
        iChecked.setVisibility(View.VISIBLE);   //line 271

    } else if (ruleEnabled.equals("false")) {
        rRule.setTypeface(null, Typeface.NORMAL);
        rRule.setTextColor(Color.GRAY);
        iChecked.setVisibility(View.GONE);

    }
    rRule.setText(ruleName);
}

Per request the error log: (Sorry was under the impression null pointers dont say anything helpful..I know the error is the imageview) 每个请求的错误日志:(对不起,印象中空指针没有说任何有用的。我知道错误是imageview)

06-29 10:29:02.777: E/AndroidRuntime(29516): FATAL EXCEPTION: main
06-29 10:29:02.777: E/AndroidRuntime(29516): java.lang.NullPointerException
06-29 10:29:02.777: E/AndroidRuntime(29516):    at com.company.app.DefaultRulesList$RulesAdapter.bindView(DefaultRulesList.java:271)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at com.company.app.DefaultRulesList$RulesAdapter.newView(DefaultRulesList.java:284)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.CursorAdapter.getView(CursorAdapter.java:246)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.AbsListView.obtainView(AbsListView.java:2033)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.ListView.makeAndAddView(ListView.java:1772)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.ListView.fillDown(ListView.java:672)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.ListView.fillFromTop(ListView.java:732)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.ListView.layoutChildren(ListView.java:1625)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.AbsListView.onLayout(AbsListView.java:1863)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.View.layout(View.java:11278)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.View.layout(View.java:11278)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.View.layout(View.java:11278)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.View.layout(View.java:11278)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.View.layout(View.java:11278)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.os.Looper.loop(Looper.java:137)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at android.app.ActivityThread.main(ActivityThread.java:4424)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at java.lang.reflect.Method.invokeNative(Native Method)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at java.lang.reflect.Method.invoke(Method.java:511)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-29 10:29:02.777: E/AndroidRuntime(29516):    at dalvik.system.NativeStart.main(Native Method)

Code for iChecked (where the id is called) iChecked的代码(在其中调用ID)

        <ImageView
android:id="@+id/checkBox"
android:padding="2dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:drawable/checkbox_on_background"/>

It looks to me like you must be feeding your adapter the wrong layout. 在我看来,您必须为适配器提供了错误的布局。

I can see no other reason for the NPE for the ImageView excpet that it doesn't exist in the layout where you are looking for it. 我看不出使用NPE作为ImageView引物的其他原因,因为它在您要查找的布局中不存在。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM