因此,使用AppCompat支持库的v23.2版本,我决定使用BottomSheetDialogFragment.当我点击列表视图中的项目时,我一直试图打开底页(与适配器连接,因此它代表一个游标).单击时,我将光标的ID传递给DialogFragment并重新查询内容提供程序以填充底部工作表.
这一切似乎工作得很好,现在的问题是,当底部工作表打开时,我只看到顶部TextView,而我希望它显示传递给底部工作表的完整布局.
这就是我现在拥有的:
1)在包含ListView的片段中,打开底部工作表对话框:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int clickedPersonId = ((Cursor) mListView.getItemAtPosition(position)).getInt(FriendsFragment.COL_PERSONS_ID);
Log.v("FriendsFragment", "Clicked person with personid = " + clickedPersonId);
PersonBottomSheetFragment personBSDF = PersonBottomSheetFragment.newInstance(clickedPersonId);
personBSDF.show(getFragmentManager(), "BOTTOM_SHEET_PERSON");
}
});
Run Code Online (Sandbox Code Playgroud)
2)fragment_person_bottom_sheet.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_person_content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/fragment_person_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_account_circle_white_36"
android:drawablePadding="10dp"
android:drawableStart="@drawable/ic_account_circle_white_36"
android:gravity="center_vertical"
android:text="Username"
android:textAllCaps="false"
android:textSize="18sp" />
<TextView
android:id="@+id/fragment_person_personname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_account_circle_white_36"
android:drawablePadding="10dp"
android:drawableStart="@drawable/ic_account_circle_white_36"
android:gravity="center_vertical"
android:text="Person name"
android:textAllCaps="false"
android:textSize="18sp" />
<TextView
android:id="@+id/fragment_person_dob"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_account_circle_white_36"
android:drawablePadding="10dp"
android:drawableStart="@drawable/ic_account_circle_white_36" …Run Code Online (Sandbox Code Playgroud) 我制作了一个可重用的组件,它接受某个类的数组。现在我想将一个 Pipe 传递给这个组件,它将将该数组的每个元素转换为我想要的视觉表示。(这根据数组对象的类而变化)。
现在我不知道如何在模板中直接使用这个Pipe。我设法让它与一个以编程方式调用管道的额外函数一起工作:
export class SingleCategoryFilterComponent<T> implements OnInit {
@Input()
possibleFilterValues: T[];
@Input()
displayPipe: PipeTransform;
constructor() {}
ngOnInit() {}
transformValue(value: T) {
return this.displayPipe.transform(value);
}
}
Run Code Online (Sandbox Code Playgroud)
和(部分)模板:
<button mat-menu-item *ngFor="let value of possibleFilterValues">
{{transformValue(value)}}
</button>
Run Code Online (Sandbox Code Playgroud)
但我宁愿不必创建这个转换函数,而只需能够执行以下操作:
<button mat-menu-item *ngFor="let value of possibleFilterValues">
{{value | displayPipe}}
</button>
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用,因为 displayPipe 未注册。有没有办法在模板中使用变量@Input displayPipe?
我是NodeJS的新手,在花了几个小时试图了解Promise如何正常工作之后,看似简单的事情仍然无效.
我正在尝试对数据库进行一些调用,一旦完成所有这些调用,就做其他事情.我现在拥有的是以下代码,但没有调用then-functions.
var queries = ['SELECT value FROM tag', 'SELECT url FROM download_link'];
console.log("Starting promises");
var allPromise = Promise.all([queryDatabaseAddToResult(connection, queries[0], result), queryDatabaseAddToResult(connection, queries[1], result)]);
allPromise.then(
function(result) {
console.log("1"); // Does not show up
}, function(err) {
console.log("2"); // Does not show up either
}
);
function queryDatabaseAddToResult(connection, query, result) {
return new Promise(function(resolve, reject) {
connection.query(query, function(err, rows, fields) {
if (err) {
console.log(err);
Promise.reject(err);
}
console.log(rows);
result.tags = JSON.stringify(rows);
Promise.resolve(result);
});
})
Run Code Online (Sandbox Code Playgroud)
}
对数据库的调用确实发生了,因为记录行显示在日志中.