我的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年重新获得独立。摩洛哥文化融合了柏柏尔人,阿拉伯人,西非和欧洲的影响。'答案 0 :(得分:0)
尝试
ConstraintLayout constraintLayout=(ConstraintLayout) view.getParent()
代替
ConstraintLayout constraintLayout=(ConstraintLayout) findViewById(R.id.gridview);
原因是 您正在案例R.id.child2下执行此操作 这意味着您需要访问该视图的父级