小编Pon*_*pat的帖子

如何使用多种视图类型创建RecyclerView?

来自https://developer.android.com/preview/material/ui-widgets.html

当我们创建时,RecyclerView.Adapter我们必须指定ViewHolder将与适配器绑定.

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private String[] mDataset;

    public MyAdapter(String[] myDataset) {
        mDataset = myDataset;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;
        public ViewHolder(TextView v) {
            super(v);
            mTextView = v;
        }
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.some_layout, parent, false);

        //findViewById...

        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.mTextView.setText(mDataset[position]);
    }

    @Override
    public int …
Run Code Online (Sandbox Code Playgroud)

user-interface android android-recyclerview

795
推荐指数
13
解决办法
39万
查看次数

将项目添加到ListView - Android

这是我第一次使用android.我正在尝试将项目添加到ListView.我使用Tabs,并且看到添加项目的唯一方法是更改​​选项卡,然后返回第一个选项卡.

我四处寻找,而且我总能找到

adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

但对我不起作用.

正如我所说,我创建了项目,固定标签+滑动.我只想让listviews具有EditText,Spinner和Button.在用于选项卡的片段底部,我有一个ImageButton.我想点击它并有一个新的行.

我的定制适配器:

package com.andreapivetta.uconverter;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

public class CustomAdapter extends ArrayAdapter<String> {
private final Context context;
private final int resourceID;

    public CustomAdapter(Context context, int resource, ArrayList<String> bah) {
        super(context, resource, bah);

        this.context = context;
        this.resourceID = resource;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(resourceID, parent, false);

        return rowView;
    }
}
Run Code Online (Sandbox Code Playgroud)

fragment_main_dummy.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

java android listview fragment android-listview

17
推荐指数
1
解决办法
15万
查看次数

迁移到Google Play服务后,广告系列跟踪无效

关注此https://developers.google.com/analytics/solutions/testing-play-campaigns

logcat始终报告:未找到任何广告系列数据.

这是我的AndroidManifest.xml

<!-- Used for Google Play Store Campaign Measurement -->
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" />
<receiver
  android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
  android:exported="true" >
  <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

android google-analytics google-play-services google-analytics-firebase

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

结束活动中的自定义共享元素转换

我有全局应用程序中的Feed数据列表.我用这个代码,以从我的转变RecyclerViewMainAcitivty

// selected item event
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("item_feed_index", selectedItemIndex);
FeedViewHolder viewHolder = getViewHolderFromPosition(position);
Pair<View, String> pair1 = Pair.create(viewHolder.imageView, "TransitionName.Feed.Image");
Pair<View, String> pair2 = Pair.create(viewHolder.textView, "TransitionName.Feed.Text");
Pair<View, String> pair3 = Pair.create(viewHolder.button, "TransitionName.Feed.Button");
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, pair1, pair2, pair3);
startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

它确实有效.但问题在于DetailActivity,我有另一个垂直列表,用户可以向下/向上滚动以更改列表中的Feed项(这也会更改滚动索引).

按回来时DetailActivity,我希望退出动画转换执行正确的查看源索引.我怎样才能做到这一点?

这是代码onActivityResultMainActivity,它滚动循环到正确的位置,但出口过渡动画是不正确的位置.

int currentFeedIndex = Application.getInstance().getCurrentViewingFeed();
if (currentFeedIndex > 0 && currentFeedIndex < adapter.getItemCount()) {
   if (gridLayoutManager != null) {
      gridLayoutManager.scrollToPositionWithOffset(currentFeedIndex + 1, 0); …
Run Code Online (Sandbox Code Playgroud)

android android-transitions android-recyclerview

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

如何在操作栏NAVIGATION_MODE_LIST中更改"小三角颜色"

我设置action bar为之后NAVIGATION_MODE_LIST

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
Run Code Online (Sandbox Code Playgroud)

然后为它设置适配器.

列表按预期显示,但我需要更改列表的"小三角"颜色,因为默认颜色非常接近我的背景颜色.

是否可以这样做,如果是这样,我该怎么做?

android android-spinner android-actionbar

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

我们怎么知道Activity共享元素转换将会运行?

为了让共享元素转换顺利运行,我需要在目标活动中推迟繁重的初始化.见下面的代码:

getWindow().setSharedElementEnterTransition(enterTransition);
enterTransition.addListener(new Transition.TransitionListener() {
    @Override
    public void onTransitionEnd(Transition transition) {
        init();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,如果此活动是从Deep link另一个没有共享元素的活动开始的.过渡永远不会开始,因此onTransitionEnd()永远不会被调用,init()永远不会运行.在这种情况下,我应该init()在活动开始后立即打电话.

我怎么知道过渡将会发生?


编辑 我还想在共享元素转换不可用时运行另一个输入转换.所以在下面回答建议使用postponeEnterTransition()对我的情况不起作用.

performance android android-intent android-activity android-transitions

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