小编Cou*_*ame的帖子

BottomSheetDialogFragment - 如何包装内容并完全显示?

因此,使用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)

android android-appcompat

10
推荐指数
1
解决办法
6192
查看次数

如何在 HTML 模板中使用作为 @Input 传递的 Pipe

我制作了一个可重用的组件,它接受某个类的数组。现在我想将一个 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?

angular

5
推荐指数
1
解决办法
3101
查看次数

NodeJS Promises - "然后"未调用

我是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)

}

对数据库的调用确实发生了,因为记录行显示在日志中.

node.js

1
推荐指数
1
解决办法
3875
查看次数

标签 统计

android ×1

android-appcompat ×1

angular ×1

node.js ×1