来自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) 这是我第一次使用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) 关注此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
我有全局应用程序中的Feed数据列表.我用这个代码,以从我的转变RecyclerView
中MainAcitivty
// 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
,我希望退出动画转换执行正确的查看源索引.我怎样才能做到这一点?
这是代码onActivityResult
中MainActivity
,它滚动循环到正确的位置,但出口过渡动画是不正确的位置.
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) 我设置action bar
为之后NAVIGATION_MODE_LIST
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
Run Code Online (Sandbox Code Playgroud)
然后为它设置适配器.
列表按预期显示,但我需要更改列表的"小三角"颜色,因为默认颜色非常接近我的背景颜色.
是否可以这样做,如果是这样,我该怎么做?
为了让共享元素转换顺利运行,我需要在目标活动中推迟繁重的初始化.见下面的代码:
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