小编jac*_*ast的帖子

Android架构组件:使用ViewModel for RecyclerView项目

我正在尝试使用Architecture Components,我想为RecyclerView的每个项目构建一个ViewModel.我不确定这是否正式正确或我应该坚持"旧方式".

我有这个适配器:

public class PostAdapter extends RecyclerView.Adapter<PostAdapter.PostViewHolder> {

    private List<Post> list;
    public static class PostViewHolder extends RecyclerView.ViewHolder{
        final ItemPostBinding binding;

        public PostViewHolder(ItemPostBinding binding){
            super(binding.getRoot());
            this.binding = binding;
        }
    }

    @Override
    public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        ItemPostBinding binding = DataBindingUtil
                .inflate(LayoutInflater.from(parent.getContext()), R.layout.item_post,
                        parent, false);


        return new PostViewHolder(binding, parent.getContext());
    }

    @Override
    public void onBindViewHolder(PostViewHolder holder, int position) {
        holder.binding.setPost(list.get(position));
        holder.binding.executePendingBindings();
    }

    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }

    public void setList(List<Post> list){ …
Run Code Online (Sandbox Code Playgroud)

android mvvm android-recyclerview android-architecture-components

24
推荐指数
2
解决办法
2万
查看次数

Android - 更改操作栏标题文本颜色

我正在开发一个应用程序,我想change the textcolor of the actionbar title.现在,我在清单中定义了一个主题:

<application
        android:theme="@style/AppTheme">
</application>
Run Code Online (Sandbox Code Playgroud)

在styles.xml中定义:

<style name="AppTheme" parent="android:style/Theme.Holo.Light">
        <item name="android:textViewStyle">@style/AppTheme.TextView</item>
        <item name="android:actionBarStyle">@style/AppTheme.ActionBarStyle</item>
    </style>

    <style name="AppTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    </style>

    <style name="AppTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="android:textColor">@color/themeapp</item>
    </style>

    <style name="AppTheme.TextView" parent="@android:style/Widget.TextView">
        <item name="android:textColor">#FFFFFF</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

这不起作用,但我不明白为什么.这应该根据这个答案工作.textview样式是否正常工作.

我做错了什么?

更新:改为满足下面的Grace Feng答案

android textview android-actionbar

17
推荐指数
3
解决办法
4万
查看次数

ConstraintLayout中的RecyclerView与其他元素重叠

我正在使用以下组件进行简单的列表活动:EditText,RecyclerView,ProgressBar和Textview.一切都运行得很好,除了与EditText重叠并且"超出"屏幕底部的RecyclerView,所以最后一项被部分剪掉(参见截图).我做错了什么?

主要活动:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="match_parent"
    tools:context="jacopo.com.flickrgallery.GalleryActivity">

    <EditText
        android:id="@+id/search_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:hint="search by tag..."
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ProgressBar
        android:id="@+id/gallery_progress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/search_text" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/gallery_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/search_text" />

    <TextView
        android:id="@+id/gallery_error"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/search_text"
        tools:text="error" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

recyclerview重叠editext recyclerView走出屏幕

android android-layout android-recyclerview android-constraintlayout

12
推荐指数
3
解决办法
1万
查看次数

Android Studio:一段时间后无法编辑文件

我刚刚安装了Android Studio,我遇到了一个问题:

经过一段时间的工作,我不能再编辑文件,我必须重新启动IDE再次编辑它们.

那太烦人了.有办法解决这个问题吗?我看到谷歌上的其他人有几乎相同的问题(主要是在ubuntu上),但我找不到任何解决方案,除了临时的:如果我点击文件的滚动条我可以再次编辑它,但是如果我更改文件或在其外做任何其他事情,将再次触发该问题; 所以实际的问题是编辑器没有通过点击它获得焦点.

我在Windows 8.1上.

android android-studio

9
推荐指数
2
解决办法
1461
查看次数

Android架构组件:绑定到ViewModel

我对使用新架构组件时数据绑定应该如何工作感到困惑.

假设我有一个带有列表,ProgressBar和TextView的简单Activity.Activity应该负责控制所有视图的状态,但ViewModel应该保存数据和逻辑.例如,我的Activity现在看起来像这样:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

    listViewModel = ViewModelProviders.of(this).get(ListViewModel.class);

    binding.setViewModel(listViewModel);

    list = findViewById(R.id.games_list);

    listViewModel.getList().observeForever(new Observer<List<Game>>() {
        @Override
        public void onChanged(@Nullable List<Game> items) {
            setUpList(items);
        }
    });

    listViewModel.loadGames();
}

private void setUpList(List<Game> items){
    list.setLayoutManager(new LinearLayoutManager(this));
    GameAdapter adapter = new GameAdapter();
    adapter.setList(items);
    list.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)

而ViewModel只负责加载数据并在列表准备好后通知Activity,以便它可以准备适配器并显示数据:

public int progressVisibility = View.VISIBLE;

private MutableLiveData<List<Game>> list;

public void loadGames(){

    Retrofit retrofit = GamesAPI.create();

    GameService service = retrofit.create(GameService.class);

    Call<GamesResponse> call = service.fetchGames();

    call.enqueue(this);
}


@Override
public void onResponse(Call<GamesResponse> call, …
Run Code Online (Sandbox Code Playgroud)

android mvvm viewmodel android-activity android-livedata

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

我该如何解决Android AVD GPU驱动程序问题

今天,我正在android模拟器上测试一个应用程序,我厌倦了使用屏幕键盘,因此我编辑了设备并启用了键盘支持,下一次我启动模拟器时,出现此错误:

这个错误

它停止工作

我尝试在各种gpu模式之间切换,并从命令行启动仿真器,强制其使用主机gpu,但没有任何效果。有人知道解决这个问题的方法吗?

android android-virtual-device android-emulator android-studio

5
推荐指数
0
解决办法
2184
查看次数

Android: create drop shadow from path

is there a way to create a drop shadow given a drawable with a path like below:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportHeight="24.0"
        android:viewportWidth="24.0">
    <path
        android:fillColor="#FFFFFF"
        android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector>
Run Code Online (Sandbox Code Playgroud)

xml 和编程方式都很好。我尝试做一些研究,但什么也没找到。

编辑:理想情况下,我需要一些可与任何向量重复使用的东西。就像是:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        //magic happens
    </item>
    <item>
        <include> my_vector </include>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

再说一遍,即使不是更好,即使以编程方式也没关系

android vector shadow drawable

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

Android和Kotlin varargs:格式化的字符串返回垃圾

我遇到一个奇怪的问题:我有一个通用函数,用于检索资源字符串(这是为了避免每次都编写context.resources.getString()):

protected fun string(@StringRes stringRes: Int, vararg args: String): String = app.getString(stringRes, args) 
Run Code Online (Sandbox Code Playgroud)

直到现在,当我添加varargs以检索格式化的字符串时,它的工作情况都很好。简单的字符串仍然可以正常工作,但是当我尝试检索格式化的字符串时:

string(R.string.formatted_string, myId)
Run Code Online (Sandbox Code Playgroud)

我的字符串资源:

<string name="formatted_string">#%s</string>
Run Code Online (Sandbox Code Playgroud)

我得到一些垃圾:

#[Ljava.lang.String;@3a59711
Run Code Online (Sandbox Code Playgroud)

预期:

#4848684
Run Code Online (Sandbox Code Playgroud)

我请求的资源的垃圾更改

它看起来是一个对象标识符。

如果我不使用该方法,它将正常工作

这是怎么回事

resources android kotlin

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

Hilt:注入应用程序范围的存储库单例

我对 Dagger 比较陌生,刚刚开始使用 Hilt。我想要的是将应用程序范围的存储库(意味着它在任何地方都需要是相同的对象)注入到ViewModel. 该存储库将用于检索用户、身份验证令牌等。这是我能得到的最接近的:

@Module
@InstallIn(ApplicationComponent::class)
abstract class ApplicationModule {
    @Singleton
    @Binds
    abstract fun bindUserService(
        userRepository: UserRepository
    ): UserService

}

@Singleton
class UserRepository @Inject constructor(
) : UserService {
    private var _user: User? = null

    override fun getUser(): Observable<User> {
        return if (_user == null) {
            fetchUser()
        } else {
            Observable.just(_user)
        }
    }

    private fun fetchUser(): Observable<User> {
        return Observable.just(User("foo", Random.nextDouble(100.00)))
            .delay(2, TimeUnit.SECONDS)
            .doOnEach { _user = it.value }
    }
}

class ProfileViewModel @ViewModelInject constructor(
    private val …
Run Code Online (Sandbox Code Playgroud)

android viewmodel dagger dagger-hilt

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

flutter:自定义形状作为文本背景

我需要在颤振中实现这一点:

在此输入图像描述

我尝试制作 aRow并设置背景来Text处理矩形,然后设置 aClipPath来制作三角形。这样做的问题是边缘不精确(您可以在下图中看到矩形和三角形之间有一条细线),而且尺寸也固定,ClipPath因此如果我想在某个时候更改文本大小,我会必须再次微调三角形。

在此输入图像描述

这是我的代码:

class TriangleClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    final path = Path();
    path.lineTo(0.0, size.height);
    path.lineTo(size.width / 3, size.height);
    path.close();
    return path;
  }

  @override
  bool shouldReclip(TriangleClipper oldClipper) => false;
}

Row(
        children: [
          Container(
            color: Colors.orange,
            child: Padding(
              padding: const EdgeInsets.all(4.0),
              child: Text(
                "a label",
              ),
            ),
          ),
          ClipPath(
            clipper: TriangleClipper(),
            child: Container(
              color: Colors.orange,
              height: 23,
              width: 20,
            ),
          )
        ],
      )
Run Code Online (Sandbox Code Playgroud)

我虽然double.infinity在 …

shapes flutter

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