如果字符串为null,则无法将constraintlayout的可见性设置为gone

时间:2018-08-05 15:52:05

标签: android

我的sqlite database中有一些路径,我用glide库将它们转换为图片。.the imageviews被分组在constraintlayout中。我想将该约束布局设置为如果mysqlite数据库中没有路径,则不可见。.

我尝试过的代码:

Public class Nostrils extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
private android.support.v7.widget.Toolbar mToolbar;
ExpandableListView expandableListView;
Database mDatabase;
private static RequestOptions noTransformOptions;
ConstraintLayout constraintLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_nostrils);


    mDatabase = new Database(this);
    mDatabase.open();
    Cursor cursor = mDatabase.getDatabase();
    startManagingCursor(cursor);

    String[] childFrom = new String[]{Database.DATABASE_CHILD_1,Database.DATABASE_CHILD_2,Database.DATABASE_CHILD_3};
    String[] groupFrom = new String[]{Database.DATABASE_GROUP_1};

    int[] groupTo = {R.id.group1};
    int[] childTo = {R.id.child1,R.id.child2,R.id.child3};

    SimpleCursorTreeAdapter simplecursortreeAdapter = new ExpandableListViewAdapter(
            this,
            cursor,
            R.layout.list_group,
            groupFrom,
            groupTo,
            R.layout.list_child,
            childFrom,
            childTo
    );

    simplecursortreeAdapter.setViewBinder(new MyViewBinder());

    expandableListView = findViewById(R.id.expandableListview2);
    expandableListView.setAdapter(simplecursortreeAdapter);
}

protected void onDestroy() {
    super.onDestroy();
    mDatabase.close();
}


public class MyViewBinder implements SimpleCursorTreeAdapter.ViewBinder {

    @Override
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        int viewID = view.getId();
        switch(viewID){
            case R.id.group1 :
                TextView groupName = (TextView) view;
                String groupname;
                groupname = cursor.getString(cursor.getColumnIndex(Database.DATABASE_GROUP_1));
                groupName.setText(groupname);

                break;

            case R.id.child1 :
                TextView friendName = (TextView) view;
                String friend_name;
                friend_name = cursor.getString(cursor.getColumnIndex(Database.DATABASE_CHILD_1));
                friendName.setText(friend_name);
                break;

                    contactProfile.setBackgroundResource(0);
                }
                break;


            case R.id.child2 :
                ImageView url = (ImageView) view;
                String urls;


          urls = cursor.getString(cursor.getColumnIndex(Database.DATABASE_CHILD_2));
            ConstraintLayout constraintLayout=(ConstraintLayout) findViewById(R.id.gridview);
            if(urls!= null) {
                constraintLayout.setVisibility(View.VISIBLE);}
            Glide.with(Nostrils.this).load(urls).apply(noTransformation()).into(url);
            url.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AlertDialog.Builder mBuilder = new AlertDialog.Builder(Nostrils.this);
                    View mView = getLayoutInflater().inflate(R.layout.dialog_custom_layout, null);
                    PhotoView photoView = mView.findViewById(R.id.imageView);
                    photoView.setImageDrawable(((ImageView)view).getDrawable());
                    mBuilder.setView(mView);
                    AlertDialog mDialog = mBuilder.create();
                    mDialog.show();
                }
            });
            break;

        case R.id.child3 :
            ImageView url3 = (ImageView) view;
            String urls3;
            urls3 = cursor.getString(cursor.getColumnIndex(Database.DATABASE_CHILD_3));
            Glide.with(Nostrils.this).load(urls3).apply(noTransformation()).into(url3);
            url3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AlertDialog.Builder mBuilder = new AlertDialog.Builder(Nostrils.this);
                    View mView = getLayoutInflater().inflate(R.layout.dialog_custom_layout, null);
                    PhotoView photoView = mView.findViewById(R.id.imageView);
                    photoView.setImageDrawable(((ImageView)view).getDrawable());
                    mBuilder.setView(mView);
                    AlertDialog mDialog = mBuilder.create();
                    mDialog.show();
                }
            });
            break;


        }
        return true;
    }

}
 private class ExpandableListViewAdapter extends SimpleCursorTreeAdapter {
        private ExpandableListViewAdapter(
                Context context,
                Cursor cursor,
                int groupLayout,
                String[] groupFrom,
                int[] groupTo,
                int childLayout,
                String[] childFrom,
                int[] childTo) { super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom, childTo); }

        protected Cursor getChildrenCursor(Cursor groupCursor) {
            return mDatabase.getID(groupCursor.getInt(groupCursor.getColumnIndex(Database.DATABASE_ID)));
        }

actibity_nostrils.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main3"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Nostrils"
    >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <include layout="@layout/navigationactionbarbleu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


    <ExpandableListView
        android:id="@+id/expandableListview2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</LinearLayout>
<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    app:menu="@menu/navigation_menu"
    android:layout_gravity="start"
    android:id="@+id/nv3"
    android:background="@color/colorbar"
    app:headerLayout="@layout/navigation_header"
    >

</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

child.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="8dp">

    <TextView
        android:id="@+id/child1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:paddingBottom="5dp"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:paddingTop="2dp"
        android:fontFamily="@font/times"
        android:textColor="@android:color/black"

        />

    <android.support.constraint.ConstraintLayout
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_below="@+id/child1"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/child2"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />

        <ImageView
            android:id="@+id/child3"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="20dp"
            android:layout_marginTop="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/child4"
            app:layout_constraintHorizontal_bias="0.227"
            app:layout_constraintStart_toEndOf="@+id/child2"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />

        <ImageView
            android:id="@+id/child4"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.942"
            app:layout_constraintStart_toEndOf="@+id/child2"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />

    </android.support.constraint.ConstraintLayout>

</LinearLayout>

错误消息:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.constraint.ConstraintLayout.setVisibility(int)' on a null object reference

但是当我打开孩子时,应用程序会继续停止! 谢谢您的帮助! PS我不能添加过多的课文..so这样的集团是无关的并且没有意义

摩洛哥人口超过3380万,面积710,850平方公里(274,460平方英里)。它的首都是拉巴特,最大的城市是卡萨布兰卡。其他主要城市包括马拉喀什,丹吉尔,萨雷,非斯,梅克内斯和乌季达。摩洛哥是一个历史上举世瞩目的地区大国,拥有其邻国不享有的独立历史。自从伊德里斯一世在788年建立第一个摩洛哥国家以来,该国就受到一系列独立王朝的统​​治,在Almoravid朝代和Almohad朝代下达到顶峰,横跨伊比利亚的部分地区和西北非洲。马里尼德和萨阿迪王朝继续与外国统治作斗争,摩洛哥仍然是唯一一个避免奥斯曼帝国占领的西北非洲国家。当前的统治王朝Alaouite王朝于1631年夺取政权。1912年,摩洛哥分为丹吉尔国际区和法国和西班牙保护区,并于1956年重新获得独立。摩洛哥文化融合了柏柏尔人,阿拉伯人,西非和欧洲的影响。'

1 个答案:

答案 0 :(得分:0)

尝试

ConstraintLayout constraintLayout=(ConstraintLayout) view.getParent()

代替

ConstraintLayout constraintLayout=(ConstraintLayout) findViewById(R.id.gridview);

原因是 您正在案例R.id.child2下执行此操作 这意味着您需要访问该视图的父级